c – Opengl适当的照明问题

c – Opengl适当的照明问题,第1张

概述我写了以下程序,在一个有两面墙和地板的房间的桌子上展示茶壶. #include <stdio.h>#include <glut.h>void wall1(float thickness){ glPushMatrix(); glTranslatef(100,100,0); glRotatef(90,1,0,0); glScalef(thickness,1,1 我写了以下程序,在一个有两面墙和地板的房间的桌子上展示茶壶.

#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();}

这个问题是我的照明部分没有按预期工作.它不能均匀地照亮我的所有物体……我缺少什么?这甚至使茶壶难以出海.
我的照明部分处于显示功能.

解决方法 我失踪了

glEnable(GL_norMAliZE);

在main函数中,因此opengl没有正确呈现它! Alse @Christian使用环境的答案才有效.

总结

以上是内存溢出为你收集整理的c – Opengl适当的照明问题全部内容,希望文章能够帮你解决c – Opengl适当的照明问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存