opengl三维编程

1.透视投影

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);

参数fovy定义视野在X-Z平面的角度取值是[0.0,180.0]

参数aspect是投影平面宽度与高度的比率

参数zNear和zFar分别是近远裁剪面沿Z负轴到视点的距离,它们总为正值。

默认情况下,视点在坐标轴原点。


2.glCullFace

在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡。如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们处理图形的效率。在这种时候,可以将不必要的面剔除。 
首先,使用glEnable(GL_CULL_FACE);来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之) 
然后,使用glCullFace来进行剔除。 

3.glBindBuffer

void glBindBuffer(GLenum target, GLuint buffer);
参数:
target
指定要捆绑的目标,是一符号常量,只能为GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER。
buffer
指定缓存类的名称

描述:
当一个缓存类绑定到一个目标上,之前为这个目标绑定缓存类就是自动释放。缓存类命名为无符整数,其中0值被保留,不是每一个目标都有默认的缓存类。如果把buffer设置为0可以有效的释放之前绑定的任何缓存类。缓存类的名称和相应的缓存类的内容是当前GL渲染上下文中shared display-list空间中的一部分,如果两个渲染上下文共享缓存类的名称,只有当它们共享display lists。

4.glBufferData

void glBufferData(GLenum targe, GLsizeiptr size,const GLvoid* data, GLenum usage);
参数:
target
指定缓存目标
size
以字节为单位,指定缓存类的大小
data
指定数据指针,用于初始化缓存类
usage
指定期望的数据存储使用方式,是如下一些符号常量GL_STREAM_DRAW,GL_STREAM_READ,GL_STREAM_COPY,GL_STATIC_DRAW,GL_STATIC_READ,GL_STATIC_COPY,GL_DYNAMIC_DRAW,GL_DYNAMIC_READ,GL_DYNAMIC_COPY。

描述:
为绑定了目标的缓存类创建一个新的数据存储。


继续学习中……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值