示例#1
0
void nbMesh::draw()
{
    if (visible && distance) {
        if (vao) {
            glLogVerbose("glBindVertexArrayOES : vao");
            glBindVertexArrayOES(vao);
        }
        else {
            setAttributePointer();
        }
        
        if (material) {
            material->draw();
        }
        
        glLogVerbose("glBindBuffer : GL_ELEMENT_ARRAY_BUFFER");
        glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, vboVertexIndex);
        
        glLogVerbose("glDrawElements");
        glDrawElements(mode,
                       (int)vertexIndexList.size(),
                       GL_UNSIGNED_SHORT,
                       ( void * )NULL );
    }
}
示例#2
0
void nbMesh::buildVao()
{
    glLog("glGenVertexArraysOES : vao");
    glGenVertexArraysOES( 1, &vao );
    
    glLog("glBindVertexArrayOES : vao");
    glBindVertexArrayOES(vao);
    
    setAttributePointer( );
    
    glLog("glBindBuffer : GL_ELEMENT_ARRAY_BUFFER");
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboVertexIndex);
    
    glLog("glBindVertexArrayOES : 0");
    glBindVertexArrayOES(0);
}
示例#3
0
void Program::UseProgram()
{
	glUseProgram(p_programID);
	
	for (int i = 0; i < p_numAttributes; i++)
	{
		glEnableVertexAttribArray(i);
	}
	
	setAttributePointer();

	int i = glGetUniformLocation(p_programID, "MVP");
	//m_MVPLocation = glGetUniformLocation(p_programID, "MVP");

	if (i != (-1))
		m_MVPLocation = i;
}