VertexArray::VertexArray() { //m_ArrayID = 0; GENVERTEXARRAYS(1, &m_ArrayID); //glGenVertexArrays(1, &m_ArrayID); //glBindVertexArray(m_ArrayID); //std::cout << m_ArrayID << std::endl; }
void BatchRenderer2D::init() { GENVERTEXARRAYS(1, &m_VAO); glGenBuffers(1, &m_VBO); BINDVERTEXARRAYS(m_VAO); glBindBuffer(GL_ARRAY_BUFFER, m_VBO); glBufferData(GL_ARRAY_BUFFER, RENDERER_BUFFER_SIZE, NULL, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(SHADER_VERTEX_INDEX); glEnableVertexAttribArray(SHADER_UV_INDEX); glEnableVertexAttribArray(SHADER_TID_INDEX); glEnableVertexAttribArray(SHADER_COLOR_INDEX); glVertexAttribPointer(SHADER_VERTEX_INDEX, 3, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)0); glVertexAttribPointer(SHADER_UV_INDEX, 2, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)offsetof(VertexData, uv)); glVertexAttribPointer(SHADER_TID_INDEX, 1, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)offsetof(VertexData, tid)); glVertexAttribPointer(SHADER_COLOR_INDEX, 4, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)offsetof(VertexData, color));//(3 * sizeof(GLfloat))); glBindBuffer(GL_ARRAY_BUFFER, 0); GLushort indices[RENDERER_INDICES_SIZE]; int offset = 0; for (int i = 0; i < RENDERER_INDICES_SIZE; i += 6) { indices[ i ] = offset + 0; indices[i+1] = offset + 1; indices[i+2] = offset + 2; indices[i+3] = offset + 2; indices[i+4] = offset + 3; indices[i+5] = offset + 0; offset += 4; } m_IBO = new IndexBuffer(indices, RENDERER_INDICES_SIZE); BINDVERTEXARRAYS(0); }
void meshModels::makeBuffer() { GENVERTEXARRAYS(1, &arrayID); BINDVERTEXARRAY(arrayID); glGenBuffers(1, &bufferID); glBindBuffer( GL_ARRAY_BUFFER, bufferID); glBufferData( GL_ARRAY_BUFFER, model.verts.size() * sizeof(vertex_t), model.verts.data(), GL_STATIC_DRAW); glGenBuffers(1, &elementID); glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, elementID); glBufferData( GL_ELEMENT_ARRAY_BUFFER, model.polys.size() * sizeof(polygon_t), model.polys.data(), GL_STATIC_DRAW); glEnableVertexAttribArray(positionID); glVertexAttribPointer( positionID, 3, GL_FLOAT, GL_FALSE, sizeof(vertex_t), 0); glEnableVertexAttribArray(normalID); glVertexAttribPointer( normalID, 3, GL_FLOAT, GL_FALSE, sizeof(vertex_t), (void*)(sizeof(float)*3)); BINDVERTEXARRAY(0); glBindBuffer( GL_ARRAY_BUFFER, 0); glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0); }