Beispiel #1
0
void drawMesh(vector<mesh_M> &mesh){
  
  mtl_on=1;
  glUniform1f(shaderProgram->getUniformLocation("mtl_on"),  mtl_on);

  for(int i=0; i<mesh.size(); i++){
    assignVBOtoAttribute("vertex", mesh[i].vertices, 4);
    assignVBOtoAttribute("normal", mesh[i].normals, 4);
    //color
    vec3 color_mtl=mesh[i].Kd;//+mesh[i].Ka+mesh[i].Ks;
    //cout<<"kd "<<loaded[i].Kd.x<<endl;
    glUniform3fv(shaderProgram->getUniformLocation("color_vec"), 1, value_ptr(color_mtl));

    //texture
    assignVBOtoAttribute("texCoords", mesh[i].texCoords, 2);
    tex_on=0;
    if(mesh[i].tex){
      glActiveTexture(GL_TEXTURE0);
      glBindTexture(GL_TEXTURE_2D,mesh[i].handle);
      glUniform1i(shaderProgram->getUniformLocation("textureMap"),0);
      tex_on=1;
    }
    glUniform1f(shaderProgram->getUniformLocation("tex_on"),  tex_on);
    glDrawArrays(GL_TRIANGLES, 0, mesh[i].count*3);
  }
}
Beispiel #2
0
//Procedura tworz¹ca VAO - "obiekt" OpenGL wi¹¿¹cy numery slotów atrybutów z buforami VBO
void setupVAO() {
	//Wygeneruj uchwyt na VAO i zapisz go do zmiennej globalnej
	glGenVertexArrays(1, &vao);

	//Uaktywnij nowo utworzony VAO
	glBindVertexArray(vao);

	assignVBOtoAttribute("texCoord", bufTexCoords, 2);
	assignVBOtoAttribute("vertex", bufVertices, 4); //"vertex" odnosi siê do deklaracji "in vec4 vertex;" w vertex shaderze
	assignVBOtoAttribute("color", bufColors, 4); //"color" odnosi siê do deklaracji "in vec4 color;" w vertex shaderze
	assignVBOtoAttribute("normal", bufNormals, 4); //"normal" odnosi siê do deklaracji "in vec4 normal;" w vertex shaderze

	glBindVertexArray(0);
}