Ejemplo n.º 1
0
const GLuint Mesh::getVAOId(int programId) {
    if (programId == -1)
    {
        LOGI("!! %p Prog Id -- %d ", this, programId);
        return 0;
    }
    if (vao_dirty_)
    {
        generateVAO(programId);
    }
    auto it = program_ids_.find(programId);
    if (it != program_ids_.end())
    {
        GLVaoVboId id = it->second;
        return id.vaoID;
    }
    vao_dirty_ = true;
    generateVAO(programId);
    it = program_ids_.find(programId);
    if (it != program_ids_.end())
    {
        GLVaoVboId id = it->second;
        return id.vaoID;
    }
    LOGI("!! %p Error in creating VAO  for Prog Id -- %d", this, programId);
    return 0;
}
Ejemplo n.º 2
0
SkyVAO::SkyVAO(const ProgramSP& program, const Sky& sky) : VAO(program)
{
	generateVAO();

	glBindBuffer(GL_ARRAY_BUFFER, sky.getVboVertices());
	glVertexAttribPointer(program->getAttribLocation(a_vertex), 4, GL_FLOAT, GL_FALSE, 0, 0);
	glEnableVertexAttribArray(program->getAttribLocation(a_vertex));

	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, sky.getVboIndices());

	glEnableVertexAttribArray(0);

	unbind();
}
PostProcessorVAO::PostProcessorVAO(const ProgramSP& program, const PostProcessor& postProcessor) :
		VAO(program)
{
	generateVAO();

	glBindBuffer(GL_ARRAY_BUFFER, postProcessor.getVboVertices());
	glVertexAttribPointer(program->getAttribLocation(a_vertex), 4, GL_FLOAT, GL_FALSE, 0, 0);
	glEnableVertexAttribArray(program->getAttribLocation(a_vertex));

	glBindBuffer(GL_ARRAY_BUFFER, postProcessor.getVboTexCoords());
	glVertexAttribPointer(program->getAttribLocation(a_texCoord), 2, GL_FLOAT, GL_FALSE, 0, 0);
	glEnableVertexAttribArray(program->getAttribLocation(a_texCoord));

	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, postProcessor.getVboIndices());

	glEnableVertexAttribArray(0);

	unbind();
}