错误一

错误现象:按动相应按键i和o无法在x轴和y轴移动camera,但按相应按键p可以在z轴移动camera。

错误原因:为了移动camera,设置了三个全局变量x、y、z,用于gluLookAt(x, y, z, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)的参数。但void myKeyboard( unsigned char key, int x, int y )传参时使用了x和y这两个变量名,所以在该函数调用的

case 'i': case 'I':

x += 1; break;

这样的与参数x有关以及与参数y有关的语句中,x和y的值并未发生变化。

解决方案:为了移动camera,设置了三个全局变量x、y、z改名为xx,yy,zz,相应的用到这三个变量的地方也做修改。

如何找到的错误原因:x,y,z三个是一起设置与使用的参数,其中两个无法正常使用,第三个却可以,那么应该有不同之处。先是看了一遍使用这三个参数的代码,格式一致,并未发现不同。然后扩大检查代码的范围,查看使用这三个参数的整个函数,先从写的键盘事件的函数入手,就看到了myKeyboard函数传参的变量名,恍然大悟。

错误二

错误现象:纹理贴图贴上的图片中颜色出现了误差,比如本来应该是红色的变成了蓝色,整个图片色调都变了。

错误原因:bmp载入函数写好之后生成纹理时glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0,GL_BGR_EXT, GL_UNSIGNED_BYTE, pixels);函数中GL_BGR_EXT参数报错,起初改成了GL_RGB,通过了编译。但是bmp存储不是RGB的顺序而是BGR的顺序,这里本来就应该是GL_BGR_EXT参数,这里的GL_BGR_EXT参数报错是因为没有头文件glext.h,无法处理该参数。

解决方案:将GL_RGB改回GL_BGR_EXT,并加上头文件#include 。

如何找到的错误原因:一开始无从下手,后来想,他山之石可以攻玉,不妨看看别人的纹理贴图代码,发现别人用了glext.h头文件和GL_BGR_EXT参数,尝试着修改之后,图片恢复正常颜色。后来又查了相关资料,才知道bmp存储不是RGB的顺序而是BGR的顺序,glext.h头文件中有将BGR的顺序变为RGB的顺序的函数。

错误三

错误现象:天空盒贴图贴了底面和后面时,发现明明有一条公共边,两张图片却未能接在一起,本应是底面与后面相交处却是背景颜色黑色。

错误原因:视角是30度俯视且gluPerspective()的zFar参数设置不够大,导致那部分棱角未在视图中显示。

解决方案:修改了图片的位置以及zFar大小为合适值。

如何找到的错误原因:一开始以为是自己贴图的函数glVertex3f中坐标设置错误,可是再三检查无误,百思不得其解。这时代码已经几百行,以为是某句代码写错,看了一遍没看出来,觉得代码太多不好寻找错误代码位置,于是重新建了个project,只写贴图相关的代码,写到gluPerspective()函数时,突然想到该透视视图原理如下图

图中梯形柱是视图的大小,超出该梯形柱的区域都不可见。而且曾经写的正方体在改变位置时会出现被削去一块的现象,想到可能是gluPerspective()的zFar参数和贴图的位置坐标设置不够合理使得那个底面与后面相交棱无法显示,于是修改了其参数大小,发现贴图显示正常了。

opengl大作业c语言,openGL-计算机图形大作业中出现的几个错误及解决相关推荐

  1. Bug总结:python语言中出现的import error错误的解决思路

    Bug总结:python语言中出现的import error错误的解决思路 目录 解决问题 解决方法 解决问题 import error错误 解决方法 T1.查看是否存在该包,要么是python集成好 ...

  2. 怎么交c语言课堂作业,C语言第四次作业课堂

    <C语言第四次作业课堂>由会员分享,可在线阅读,更多相关<C语言第四次作业课堂(24页珍藏版)>请在人人文库网上搜索. 1.1,C,语言作业解析,第三弹,寄语:本次作业比较变态 ...

  3. noj大作业c语言扫雷,noj大作业.doc

    作业名称:算法演示程序学 院:航海学院班 级:学 号:2013300951姓 名:苏和团队组成: 西北工业大学 2015年11月11日 1.问题与背景(描述程序所要解决的问题或应用背景) C语言经过几 ...

  4. noj大作业c语言扫雷,noj大作业概要.doc

    noj大作业概要 作业名称:算法演示程序学 院:航海学院班 级:学 号:2013300951姓 名:苏和团队组成: 西北工业大学 2015年11月11日 1.问题与背景(描述程序所要解决的问题或应用背 ...

  5. noj大作业c语言扫雷,noj大作业简介.doc

    作业名称:算法演示程序学 院:航海学院班 级:学 号:2013300951姓 名:苏和团队组成: 西北工业大学 2015年11月11日 1.问题与背景(描述程序所要解决的问题或应用背景) C语言经过几 ...

  6. c语言 生成大素数,C语言实现寻找大素数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 找到一亿内所有素数并写入文件用时 35秒. #include "math.h" #include "stdio.h" ...

  7. c语言素数程序出现大空行,C语言实现寻找大素数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 找到一亿内所有素数并写入文件用时 35秒. #include "math.h" #include "stdio.h" ...

  8. 用c语言产生大素数,C语言实现寻找大素数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 找到一亿内所有素数并写入文件用时 35秒. #include "math.h" #include "stdio.h" ...

  9. 弟弟的作业c语言代码,弟弟的作业

    在这次,我又开始给弟弟做了作业,不对,是和弟弟,一起,做弟弟的作业.以前都是我妈妈,教他的,也是我妈妈辅导他,让他做好作业,但是现在不一样,我妈妈很忙很忙,所以就是由我来辅导他做作业. 这是第二次给他 ...

  10. 使用R语言包clusterProfiler做KEGG富集分析时出现的错误及解决方法

    使用enrichKEGG做通路富集分析时,一直报错:显示No gene can be mapped.... k <- enrichKEGG(gene = gene, organism = &qu ...

最新文章

  1. 注意String.Split的几个重载形式
  2. CVPR一区审稿人分享:图像分割论文通关攻略
  3. DevOps Troubleshooting(1)-运维思想
  4. C++知识点8——函数的返回值
  5. 如何使用Swift获取App版本和内部版本号?
  6. Eclipse 创建 Java 包
  7. python技巧:拆分多层嵌套列表
  8. 深度学习(18)神经网络与全连接层一: 数据加载
  9. OpenCV学习笔记(十四):重映射:remap( )
  10. jdbc oracle 删除数据库连接,如何使用JDBC API从Oracle数据库中删除表?
  11. hashmap java 便利_java遍历HashMap的高效方法
  12. linux 多线程(一)条件变量
  13. 编译支持iOS的libcurl+OpenSSL库(支持https IPv6)
  14. chrome版本太旧 无法更新
  15. 破解软件试用版到期问题通用办法
  16. BUCK/BOOST电路
  17. 各大IT公司、软件公司员工等级(级别)及薪资
  18. 套头文件html重复,关于C++头文件重复包含的问题
  19. FFmpeg使用X264编码参数
  20. ab753变频器参数怎么拷贝到面板_富士和三菱变频器面板参数的拷贝方法

热门文章

  1. state 全局值 设置 和获取
  2. 记一次渗透测试某路由器
  3. C#与.NET Framework c#编程语言,和java是一样的。(c#,java) --javaweb,asp.net
  4. 牛客网_Wannafly模拟赛1
  5. Leetcode 147 Insertion Sort List
  6. Prim POJ 2031 Building a Space Station
  7. 10.11 cocoapods安装
  8. JAVA和JVM运行原理揭秘
  9. Redis的持久化机制:RDB和AOF
  10. MyCat分片规则之ASCII码取模范围分片