opengl(一)

函数:glClearDepth()

说到这个先来说一下深度缓存:在生活中一个物体(实心的)很有可能会挡住另一个物体,那么opengl应该对这个怎么办呢。那么就引入了这个深度缓存的概念,目的就是把挡住的部分去掉。接下来就可以介绍这个函数了。

这个函数的目的就是为了给深度缓存一个值。

那么到底是显示前面的物体还是被挡住的物体呢,我们要使用另一个函数glDepthFunc()。

GL_NEVER,不通过(输入的深度值不取代参考值)

GL_LESS,如果输入的深度值小于参考值,则通过

GL_EQUAL,如果输入的深度值等于参考值,则通过

GL_LEQUAL,如果输入的深度值小于或等于参考值,则通过

GL_GREATER,如果输入的深度值大于参考值,则通过

GL_NOTEQUAL,如果输入的深度值不等于参考值,则通过

GL_GEQUAL,如果输入的深度值大于或等于参考值,则通过

GL_ALWAYS,总是通过(输入的深度值取代参考值)

这些是它内部的参数,使用第二个就可以显示小于等于参考值的部分,第五个就和这个相反。

函数 glHint(),这个就是为了如果不能满足内部第一个个参数的条件那么就要去进行第二个参数代表的运算。

第一个参数:

GL_FOG_HINT

指示雾计算的准确性。 如果 OpenGL 实现不有效地支持每像素雾计算,提示 GL_DONT_CARE 或 GL_FASTEST 会导致每个顶点雾化效果计算。

GL_LINE_SMOOTH_HINT

指示是锯消除行的采样质量。如果应用了一个较大的筛选器函数,则将提示 GL_NICEST 可能会导致生成过程中栅格化,更多像素碎片。

GL_PERSPECTIVE_CORRECTION_HINT

表示颜色和纹理坐标插补的质量。 如果角度更正参数插值不有效地支持由 OpenGL 实现,提示 GL_DONT_CARE 或 GL_FASTEST 可以导致简单线性插值的颜色和/或纹理坐标。

GL_POINT_SMOOTH_HINT

表示是锯消除点采样的质量。 如果应用了一个较大的筛选器函数, 则将提示 GL_NICEST 可能会导致生成 过程中栅格化,更多像素碎片。

GL_POLYGON_SMOOTH_HINT

指示是锯消除多边形的采样质量 。如果应用了一个较大的筛选器函数,则将提示GL_NICEST 可能会导致生 成过程中栅格化, 更多像素碎片。

第二个参数:

GL_FASTEST

应选择最有效的选项。

GL_NICEST

应选择最正确或最高质量的选项。

GL_DONT_CARE

客户端没有一个首选项。

返回值

返回以下错误代码和他们的条件。

返回代码

说明

GL_INVALID_ENUM

目标 或 模式 不被接受的值。

GL_INVALID_OPERATION

不能在调用 glBegin 和 glEnd 的相应调用之间被调用该函数。

exp:glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);这个是让系统优化界面用的。

最后来讲一下函数gluPerspective(GLdouble
fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

这个是原型。第一个参数是指你视角的大小,第二个是长和宽的比值,第三个是你离近处面的距离,第四个是你离远处面的距离。这样讲很抽象,给张图就懂了。

这个函数的目的是为了设置视口大小用的。

时间: 2024-12-29 11:39:16

opengl(一)的相关文章

OpenGL编程 基础篇(五)世界窗口和视口

一.基本定义 世界窗口:在世界坐标系中定义一个对齐的矩形(aligned rectangle,即矩阵的边与坐标轴平行)的窗口,这个世界窗口外的部分被裁减并不被绘制.OpenGL会自动地做剪裁. 视口:在显示器的屏幕窗口上定义一个对齐的矩形的视口,OpenGL会自动建立世界窗口和视口的变换(包括缩放和平移).当世界窗口中所有对象都被绘制时,对象在世界窗 口中的部分会被自动地映射到视口中----换句话说,被映射到屏幕坐标中,即像素在显示器上的坐标. 二.相关函数介绍 1.对于二维绘图来说,世界窗口由

转:openGL入门(2)

本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同. 数学上的点,只有位置,没有大小.但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点.另一方面,无论图形输出设备(例如,显示器)如何精确,始终不能输出一个无穷小的点.一般情况下,OpenGL中的点将被画成单个的像素(像素的概念,请自己搜索之~),虽然它可能足够小,但并不会是无穷小.同一像素上,

android opengl es 源码

[转自:http://blog.csdn.net/happyhell/article/details/6086973] The entire OpenGL ES API on Android is implemented in three libraries, located under /system/lib (for more information about OpenGL ES visit the official Khronos page): * libEGL.so: implemen

【OpenGL】第二篇 Hello OpenGL

------------------------------------------------------------------------------------------------------------------------------- 就像学习其他编程语言一样,为了顺利写下第一个OpenGL程序 我们必须不辞辛苦的先铺好砖块,搭建好环境…… 所以接下来让我先把所需要的库的环境安置好,再开始coding. ------------------------------------

OpenGL蓝宝书第六章代码疑虑:为什么使用了GL_TEXTURE_1D??纹理和顶点间的映射是如何实现?

遇到一个大问题,明明加载纹理绑定的是GL_TEXTURE_2D glUniform1i(locCloudTex, 1); //明明默认为0,参数却不是0. 可是原书中代码确是 glGenTextures(1, &uiTexture); glBindTexture(GL_TEXTURE_1D, uiTexture); // LoadTGATexture("Clouds.tga", GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE); glUniform

OpenGL - obj文件的导入

http://blog.csdn.net/silangquan/article/details/9707347 Obj文件简介 OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的互导,也可以通过Maya读写.比如你在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择.目前几乎所有知名的3

OpenGL学习系列第二篇

在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件. 代码的前4行包括了我们使用的每个库文件的头文件.如下所示: #include <windows.h>// Windows的头文件 #include <glew.h>       // 包含最新的gl.

Android OpenGL ES

1.Android OpenGL ES 简明开发教程3D 坐标变换: http://www.linuxidc.com/Linux/2011-10/45756p4.htm

VC++6.0中OpenGL应用程序开发

1. Win32控制台方式 建立Win32 控制台程序,在头文件中加入 #include <windows.h>  #include <wingdi.h>  #include <GL/gl.h>  #include <GL/glu.h >   #include <GL/glaux.h> 2. MFC方式 (1)采用VC AppWizard向导创建空的MFC(EXE)工程框架,整个过程总共6步,值得指出的是一般情况下在向导的第1步选择创建工程的模式

OpenGL ES编程入门资源集合

OpenGL ES 2.0中文手册:http://www.dreamingwish.com/articlelist/category/opengl-es-api 里边讲解了部分API的功能,作为基本的参考. OpenGL ES2.0 渲染管线:http://codingnow.cn/opengles/1504.html OpenGL ES2.0 绘制三角形:http://codingnow.cn/opengles/1514.html 一个OpenGL ES2.0的例子:http://blog.c