本文整理汇总了C++中GLSLShader::bindShader方法的典型用法代码示例。如果您正苦于以下问题:C++ GLSLShader::bindShader方法的具体用法?C++ GLSLShader::bindShader怎么用?C++ GLSLShader::bindShader使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GLSLShader
的用法示例。
在下文中一共展示了GLSLShader::bindShader方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: display
////////////////////////////////////////////////////////////////////////////////////////////////////
//! Display mainloop.
////////////////////////////////////////////////////////////////////////////////////////////////////
void display(){
// set OpenGL states
setOpenGLStates();
// Clear the color and depth buffer
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
mat4 modelViewMatrix = viewMatrix * objectMatrix;
mat4 modelViewProjectionMatrix = projectionMatrix * modelViewMatrix;
mat4 normalMatrix = glm::transpose(glm::inverse(modelViewMatrix));
glUniformMatrix4fv(m_MVHandle, 1, GL_FALSE, glm::value_ptr(modelViewMatrix));
glUniformMatrix4fv(m_MVPHandle, 1, GL_FALSE, glm::value_ptr(modelViewProjectionMatrix));
glUniformMatrix4fv(m_NormalMatrixHandle, 1, GL_FALSE, glm::value_ptr(normalMatrix));
glUniform4fv(m_lightPosition, 1, glm::value_ptr(lightDirection));
glUniform4f(m_lightAmbient, light_ambient[0], light_ambient[1], light_ambient[2], 1.0f);
glUniform4fv(m_lightDiffuse, 1, light_diffuse);
glUniform4fv(m_lightSpecular, 1, light_diffuse);
glUniform4fv(m_MaterialAmbient, 1, mat_ambient);
glUniform4fv(m_MaterialDiffuse, 1, mat_diffuse);
glUniform4fv(m_MaterialSpecular, 1, mat_specular);
glUniform1f(m_MaterialShininess, mat_shininess[0]);
// Set the render states for the current rendering technique
// switch(currentRenderer){
// case FLAT:
// // TODO ENABLE PER FACE LIGHTING
// renderFlat = true;
// renderGouraud = false;
// renderBlinnPhong = false;
// break;
// case GOURAUD:
// // TODO ENABLE PER VERTEX LIGHTING
// renderFlat = false;
// renderGouraud = true;
// renderBlinnPhong = false;
// break;
// case BLINN_PHONG:
// // ENABLE PER FRAGMENT LIGHTING
// renderFlat = false;
// renderGouraud = false;
// renderBlinnPhong = true;
blinnPhongShader.bindShader();
// break;
// break;
// default:
// break;
// }
//glPushMatrix();
// Rotate the object
//glMultMatrixf(&objectMatrix[0][0]);
// Render the object
// TODO
// glBegin(GL_TRIANGLES);
// glVertex3f(1,0,0);
// glVertex3f(0,1,0);
// glVertex3f(0,0,1);
// glEnd();
if (renderFlat)
{
//mesh.renderFlat();
}
//if (renderGouraud || renderBlinnPhong)
//{
mesh.renderSmooth();
//}
// disable program object to avoid side effects
//glUseProgramObjectARB( 0);
//glPopMatrix();
glFlush();
//glutPostRedisplay();
//glutSwapBuffers();
}
示例2: display
// display callback
// XXX: NEEDS TO BE IMPLEMENTED
void World::display() {
glClearColor(0.2, 0.2, 0.2, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// position the camera at (0,0,cameraZ) looking down the
// negative z-axis at (0,0,0)
gluLookAt(0.0, 0.0, cameraZ, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
GLfloat lightPosition[]= { 5.0, 5.0, 5.0, 0.0 };
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
// shift object
glTranslatef(shift.x, shift.y, shift.z);
// rotate Object
glRotatef(rotation.x, 1.0f, 0.0f, 0.0f);
glRotatef(rotation.y, 0.0f, 1.0f, 0.0f);
// show coordinate system
if (showCoordinates) {
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glBegin(GL_LINES);
glColor3ub(255, 0, 0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glColor3ub(0, 255, 0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glColor3ub(0, 0, 255);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glEnd();
}
// show center of spherical mapping
if (showOrigin) {
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glColor3f(1.0, 1.0, 0.0);
glPushMatrix();
glutSolidSphere(0.05f, 20, 20);
glPopMatrix();
}
// draw cursor
// XXX
// INSERT YOUR CODE HERE
glBegin(GL_LINES);
glColor3ub(255, 0, 0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(cursor.x, cursor.y, cursor.z);
glEnd();
// END XXX
glScalef(scale, scale, scale);
if (doLighting)
glEnable(GL_LIGHTING);
else
glDisable(GL_LIGHTING);
// draw the geometry
// if showTexture is true, enable texturing in opengl
// XXX
// INSERT YOUR CODE HERE
if (showTexture) {
glEnable(GL_TEXTURE_2D);
}
// END XXX
glColor3f(1, 1, 1);
if (environmentMapping) {
if (!shaderIsLoaded) {
myShader.load("shaders/emBlinnPhong");
shaderIsLoaded = 1;
}
myShader.bindShader();
}
if (drawRect) {
// draw a textured quad
//.........这里部分代码省略.........