错误一

错误现象:按动相应按键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 <GL/glext.h>。

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

错误三

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

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

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

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

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

openGL-计算机图形大作业中出现的几个错误及解决的更多相关文章

  1. 在Linux下安装PHP过程中,编译时出现错误的解决办法

    在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法 configure: error: libjpeg.(a ...

  2. Mysql安装过程中出现apply security settings错误的解决方法

    在学习Mysql的过程中,首先要安装Mysql.然而在第一遍安装过程中难免会出现安装错误的时候,当卸载后第二次安装(或者第三次甚至更多次)的时候,往往在安装最后一步会出现apply security ...

  3. Myeclipse中web project各种常见错误及解决方法(持续更新)

    创建web project时的问题 error:Install Dynamic web Module Facet卡住 solution:把网络关掉再创建就可以 Servlet error:The se ...

  4. .NET中OpenFileDialog使用报线程错误的解决方法

    昨天,在做一个NPOI读取的小demo的时候,使用OpenFileDialog打开文件,最开始的写法,直接在按钮点击事件中写,会报错,代码如下: OpenFileDialog ofd = new Op ...

  5. Java文件中出现这样的提示错误与解决方法:Cannot return from outside a function or method?

    1.打开  >>  Myeclipse或Eclipse.(我使用的是Myeclipse) 2.打开  >>  Window  >>  Preferences  如图 ...

  6. VS2005 “无法在证书存储区中找到清单签名证书”错误的解决方法

    方法一:在VS2005中出现该错误时,用记事本打开项目的.csproj文件,删除以下内容即可:    <ManifestCertificateThumbprint>B531F2CF2227 ...

  7. Windows7 64位中出现的KERNELBASE.dll错误的解决方法

    最近在服程序时遇到个问题,电脑是win764位,编译完的exe测试,偶尔总报错,报错是偶尔的,有时候报错很频繁,但是有一次测试,测试了半天都没有报错,我以为好,发布输出没一会儿又报错了,真是崩溃了,所 ...

  8. 项目中gulp使用发生的错误及解决

    在项目开发中,执行gulp css来生成合成的css文件时,报如下错误 Error: Cannot find module 'browserslist' 解决方法: npm install brows ...

  9. 连接Oracle 10g时ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME错误的解决

    近日服务器断电,导致客户端连接ORACLE服务器时出现ORA-12514错误,在网上查得解决方法如下 解决方法: 1. 打开/network/admin/listener.ora文件,找到: SID_ ...

随机推荐

  1. Huawei BGP和OSPF双边界重分布(二)

    网络拓扑: 本例主要配置和例一致,主要是在AR3260-AR1和AR3260-AR2的路由域的边界上,从AR3260-AR1上重分布进BGP 65001的路由的时候打tag 650011,在AR326 ...

  2. A Boring Problem UVALive - 7676

    16年北京现场赛的题,全场过的队30+. 初看只知道 O(N^2logK)的暴力,以为是什么变换. 仔细发现活用 二项式定理 就行. #include <bits/stdc++.h> us ...

  3. 有关Lambda的一些思考

    问题: What do lambda expressions do? Can we write all functions as lambda expressions? In what cases a ...

  4. [原]Webpack 3 + AngularJS1.* + Bootstrap 4 + Mapbox-gl

    直接上步骤 一.创建项目 1. 使用VSCode建立项目目录结构如下: 文档结构 wabg ├── http │ ├── app.js │ ├── controllers │ │ └── index. ...

  5. &#65279导致网页顶部空白一行的解决办法【实测有效】

    我用织梦做的网站,出现了&#65279导致网页顶部空白一行的问题.通过搜索,了解到这原来是UTF-8的BOM的问题. &#65279导致网页顶部空白一行原因 这个问题只会在chrome ...

  6. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  7. 设计模式学习心得<享元模式 Flyweight>

    享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能.这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式. 享元模式尝 ...

  8. 20170506计划-----(基于python查询oracle语句)

    在日常的工作中,经常接到开发同事查询生产SQL的请求,公司又不允许对开发开放查询SQL的权限,并且查询的堡垒机又很慢,计划做一个可以自动查询SQL的小工具,一周内完成吧. 大概功能实现了,一些涉及敏感 ...

  9. java分布式电子商务云平台b2b b2c o2o需要准备哪些技术??

    技术解决方案 开发语言: java.j2ee 数据库:mysql JDK支持版本: JDK1.6.JDK1.7.JDK1.8版本 核心技术:分布式.云服务.微服务.服务编排等. 核心架构: 使用Spr ...

  10. 第三次Java作