c – Opengl适当的照明问题
发布时间:2020-12-16 09:35:06 所属栏目:百科 来源:网络整理
导读:我写了以下程序,在一个有两面墙和地板的房间的桌子上展示茶壶. #include stdio.h#include glut.hvoid wall1(float thickness){ glPushMatrix(); glTranslatef(100,100,0); glRotatef(90,1,0); glScalef(thickness,1); glutSolidCube(100); glPopMatrix();}vo
我写了以下程序,在一个有两面墙和地板的房间的桌子上展示茶壶.
#include <stdio.h> #include <glut.h> void wall1(float thickness) { glPushMatrix(); glTranslatef(100,100,0); glRotatef(90,1,0); glScalef(thickness,1); glutSolidCube(100); glPopMatrix(); } void wall2(float thickness) { glPushMatrix(); glTranslatef(150,-50); glScalef(1,thickness); glutSolidCube(100); glPopMatrix(); } void floor(float thickness) { glPushMatrix(); glTranslatef(150,50,0); glScalef(1,thickness,1); glutSolidCube(100); glPopMatrix(); } void leg(float thickness) { glPushMatrix(); glScalef(thickness,.5,thickness); glutSolidCube(100); glPopMatrix(); } void tableTop(float thickess) { glPushMatrix(); glTranslatef(150,0); glScalef(.5,thickess,.5); glutSolidCube(100); glPopMatrix(); } void table() { tableTop(.05); glPushMatrix(); glTranslatef(125,75,-25); leg(.05); glPopMatrix(); glPushMatrix(); glTranslatef(175,25); leg(.05); glPopMatrix(); glPushMatrix(); glTranslatef(125,25); leg(.05); glPopMatrix(); glPushMatrix(); glTranslatef(150,110,0); glScalef(.1,.1,.1); glutSolidTeapot(100); glPopMatrix(); } void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); float pos[] = {200,200,0}; float dif[] = {.3,.3,3}; float spe[] = {1,1}; float amb[] = {1,0}; glLightfv(GL_LIGHT0,GL_POSITION,pos); glLightfv(GL_LIGHT0,GL_DIFFUSE,dif); glLightfv(GL_LIGHT0,GL_AMBIENT,amb); glLightfv(GL_LIGHT0,GL_SPECULAR,spe); glTranslatef(50,0); glRotatef(30,0); glRotatef(-30,0); wall1(.05); wall2(.05); floor(0.05); table(); glFlush(); } void reshape(int w,int h) { glViewport(0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,400,-400,400); glMatrixMode(GL_MODELVIEW); } void main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH); glutInitWindowPosition(100,100); glutInitWindowSize(400,400); glutCreateWindow("woot"); glClearColor(1,1); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glShadeModel(GL_SMOOTH); glutReshapeFunc(reshape); glutDisplayFunc(display); glutMainLoop(); } 这个问题是我的照明部分没有按预期工作.它不能均匀地照亮我的所有物体……我缺少什么?这甚至使茶壶难以出海. 解决方法
我失踪了
在main函数中,因此opengl没有正确呈现它! Alse @Christian使用环境的答案才有效.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |