本文整理汇总了C++中VertexLayout::getAttribs方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexLayout::getAttribs方法的具体用法?C++ VertexLayout::getAttribs怎么用?C++ VertexLayout::getAttribs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexLayout
的用法示例。
在下文中一共展示了VertexLayout::getAttribs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initialize
void Vao::initialize(RenderState& rs, ShaderProgram& _program, const VertexOffsets& _vertexOffsets,
VertexLayout& _layout, GLuint _vertexBuffer, GLuint _indexBuffer) {
m_glVAOs.resize(_vertexOffsets.size());
GL::genVertexArrays(m_glVAOs.size(), m_glVAOs.data());
fastmap<std::string, GLuint> locations;
// FIXME (use a bindAttrib instead of getLocation) to make those locations shader independent
for (auto& attrib : _layout.getAttribs()) {
GLint location = _program.getAttribLocation(attrib.name);
locations[attrib.name] = location;
}
rs.vertexBuffer(_vertexBuffer);
int vertexOffset = 0;
for (size_t i = 0; i < _vertexOffsets.size(); ++i) {
auto vertexIndexOffset = _vertexOffsets[i];
int nVerts = vertexIndexOffset.second;
GL::bindVertexArray(m_glVAOs[i]);
// ELEMENT_ARRAY_BUFFER must be bound after bindVertexArray to be used by VAO
if (_indexBuffer != 0) {
rs.indexBufferUnset(_indexBuffer);
rs.indexBuffer(_indexBuffer);
}
// Enable vertex layout on the specified locations
_layout.enable(locations, vertexOffset * _layout.getStride());
vertexOffset += nVerts;
}
GL::bindVertexArray(0);
rs.vertexBuffer(0);
rs.indexBuffer(0);
}