void OGLViewer::initializeGL()
{
    // OpenGL extention initialization
    glewInit();
    // Print OpenGL vertion
    cout << "Renderer: " << glGetString(GL_RENDERER) << endl;
    cout << "OpenGL version supported " << glGetString(GL_VERSION) << endl;

    // Enable OpenGL features
    glEnable(GL_MULTISAMPLE);
    //glEnable(GL_LINE_SMOOTH);
    //glEnable(GL_POLYGON_SMOOTH);
    glEnable(GL_BLEND);
    glEnable(GL_DEPTH_TEST); // enable depth-testing
    glBlendEquation(GL_FUNC_ADD);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glFrontFace(GL_CCW); // set counter-clock-wise vertex order to mean the front
    glClearColor(0.6, 0.6, 0.6, 0.0);

    //////////////////////////////////////////////////////////////////////////
    // Create shader files
    model_shader.reset(new GLSLProgram("mesh_vs.glsl", "mesh_fs.glsl",
        nullptr, nullptr, nullptr, true, 1, feedbackVaryings.data()));

    // Export vbo for shaders
    model_mesh->exportVBO(&model_verts, &model_uvs, &model_norms);
    feedbackOutput.resize(model_verts.size());

    bindMesh();
}
Exemple #2
0
Mesh::Mesh():
FACES(0),
TRIANGLES_PER_FACE(0),
VERTICES_PER_TRIANGLE(0),
INDICES(0),
INDEX_ARRAY_SIZE(0),
DIMENSIONS(0),
COLOUR_COMPONENT_COUNT(0),
VERTEX_SIZE(0),
VERTEX_COUNT(0),
VERTEX_ARRAY_SIZE(0),
name(""),
indexedMesh(true),
wireFrame(false),
meshHandle(0)
{
	glGenVertexArrays(1, &meshHandle);
	bindMesh();
	
}
Exemple #3
0
void Mesh::draw()
{
	bindMesh();
	
	//Let openGL know that our input is triangles to be tesselated.
	glPatchParameteri(GL_PATCH_VERTICES, 3);
	
	if (indexedMesh)
	{
		/* Draw whatever is specified by the currently bound mesh (VAO)
		 * 1. Type of primitive we want to draw
		 * 2. Amount of indices in our array
		 * 3. Type of variable stored in the array
		 * 4. Pointer to the actual index array (leave as null to get the bound GL_ELEMENT_ARRAY_BUFFER instead)
		 */
		glDrawElements(GL_PATCHES, INDEX_ARRAY_SIZE, GL_UNSIGNED_INT, 0);
	}
	else
	{
		glDrawArrays(GL_TRIANGLES, 0, VERTEX_COUNT);
	}
}