---------------------------------------------------------------------
| 2119 | } |
| 2120 | //--------------------------------------------------------------------- |
| 2121 | void GLRenderSystem::_render(const RenderOperation& op) |
| 2122 | { |
| 2123 | // Call super class |
| 2124 | RenderSystem::_render(op); |
| 2125 | |
| 2126 | mMaxBuiltInTextureAttribIndex = 0; |
| 2127 | |
| 2128 | const VertexDeclaration::VertexElementList& decl = |
| 2129 | op.vertexData->vertexDeclaration->getElements(); |
| 2130 | VertexDeclaration::VertexElementList::const_iterator elemIter, elemEnd; |
| 2131 | elemEnd = decl.end(); |
| 2132 | |
| 2133 | for (elemIter = decl.begin(); elemIter != elemEnd; ++elemIter) |
| 2134 | { |
| 2135 | const VertexElement & elem = *elemIter; |
| 2136 | size_t source = elem.getSource(); |
| 2137 | |
| 2138 | if (!op.vertexData->vertexBufferBinding->isBufferBound(source)) |
| 2139 | continue; // skip unbound elements |
| 2140 | |
| 2141 | HardwareVertexBufferSharedPtr vertexBuffer = |
| 2142 | op.vertexData->vertexBufferBinding->getBuffer(source); |
| 2143 | |
| 2144 | bindVertexElementToGpu(elem, vertexBuffer, op.vertexData->vertexStart); |
| 2145 | } |
| 2146 | |
| 2147 | auto numberOfInstances = op.numberOfInstances; |
| 2148 | |
| 2149 | bool multitexturing = (getCapabilities()->getNumTextureUnits() > 1); |
| 2150 | if (multitexturing) |
| 2151 | glClientActiveTextureARB(GL_TEXTURE0); |
| 2152 | |
| 2153 | // Find the correct type to render |
| 2154 | GLint primType; |
| 2155 | switch (op.operationType) |
| 2156 | { |
| 2157 | case RenderOperation::OT_POINT_LIST: |
| 2158 | primType = GL_POINTS; |
| 2159 | break; |
| 2160 | case RenderOperation::OT_LINE_LIST: |
| 2161 | primType = GL_LINES; |
| 2162 | break; |
| 2163 | case RenderOperation::OT_LINE_LIST_ADJ: |
| 2164 | primType = GL_LINES_ADJACENCY_EXT; |
| 2165 | break; |
| 2166 | case RenderOperation::OT_LINE_STRIP: |
| 2167 | primType = GL_LINE_STRIP; |
| 2168 | break; |
| 2169 | case RenderOperation::OT_LINE_STRIP_ADJ: |
| 2170 | primType = GL_LINE_STRIP_ADJACENCY_EXT; |
| 2171 | break; |
| 2172 | default: |
| 2173 | case RenderOperation::OT_TRIANGLE_LIST: |
| 2174 | primType = GL_TRIANGLES; |
| 2175 | break; |
| 2176 | case RenderOperation::OT_TRIANGLE_LIST_ADJ: |
| 2177 | primType = GL_TRIANGLES_ADJACENCY_EXT; |
| 2178 | break; |
no test coverage detected