我用OPENGL设计好了一个旋转的立方体,请教高手们怎么样给它加上光照,使得在旋转的时候可以看到光敏感变化的效果。
我认为难点在于旋转物时立方体,而不是球,而且在大多数的例子中也没有相关的说明。现在我急需此例子再做下一步的工作,那位高手能帮我一下,不胜感激!
我认为难点在于旋转物时立方体,而不是球,而且在大多数的例子中也没有相关的说明。现在我急需此例子再做下一步的工作,那位高手能帮我一下,不胜感激!
解决方案 »
- 如何用packet32进行基于数据链路层的数据嗅探
- atl web server的问题
- 请问像CHttpFile* CHttpConnection* 这些指针变量用完后调用->Close()方法后,还需delete么?
- stl出现的一个棘手问题. 要高手吗, 需要经验.
- 高手进来,DLL中的同步问题
- 怎么从Recordset中获取一个"disconnected" Fields对象?
- 如何编程发送、接受arp包?
- 不能连续发帖子超过3个吗?有谁愿意帮我转发一下20分相送。
- 一个打开文件的错误!
- 分!!您垂手可得!!
- vc 操作excel
- glew不能用,出错"无法解析的外部符号 __imp__wglMakeCurrent@8,该符号在函数............"
void COpenGLView::SetupLighting ()
{
//Material Properties
GLfloat matSpecular[] = { 1.0f, 0.0f, 0.0f, 1.0f};
GLfloat matShininess[] = { 50.0f};
GLfloat matAmbient[] = { 0.25f, 0.25f, 0.25f, 1.0f};
GLfloat matDiffuse[] = { 0.5f, 0.5f, 0.5f, 1.0f}; glMaterialfv(GL_FRONT, GL_SPECULAR, matSpecular);
glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiffuse);
glMaterialfv(GL_FRONT, GL_AMBIENT, matAmbient);
//Lighting Parameters
//Enable Lighting
glEnable(GL_LIGHTING); //Specify a single directional light
GLfloat ambient1[] = { 0.5f,0.5f,0.5f};
GLfloat diffuse1[] = { 0.5f,0.5f,0.5f};
GLfloat specular1[] = { 1.0f,0.0f,0.0f};
GLfloat position1[] = { 0.0f,0.0f,5.0f,0.0}; glLightfv(GL_LIGHT0, GL_AMBIENT, ambient1);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse1);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular1);
glLightfv(GL_LIGHT0, GL_POSITION, position1);
glEnable(GL_LIGHT0); //Specify a single positional spotlight
GLfloat ambient2[] = { 1.0f,1.0f,0.0f};
GLfloat diffuse2[] = { 1.0f,0.0f,0.0f};
GLfloat position2[] = { 1.0f,0.0f,5.0f,1.0};
GLfloat direction2[] = {0.0f,0.0f,-5.0f}; glLightfv(GL_LIGHT1, GL_AMBIENT, ambient2);
glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse2);
glLightfv(GL_LIGHT1, GL_POSITION, position2);
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, direction2);
glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 15.0f);
glEnable(GL_LIGHT1);}
将上面的代码放在InitializeOpenGL()中,假如你采用的是控制台程序,那就是改写一下上面的代码,并将代码放在Init()中实现就可以了~~~