OpenGl

来源:互联网 发布:企业应用开发实战源码 编辑:程序博客网 时间:2024/06/05 04:34

Xcode建立opengl模板,此模板并不推荐使用。


自己建立模板:

创建单个视图控制器模板,在xib界面中把模板关联上模板。

添加库文件:

Opengles,quartzcore


在appdelegate中,方法:applicationWillResignActive中添加(eaglview*)self.viewcontroller.view stopAnimation


didBecomeAction:修改 startanimation


willTerminate:stopanimation


三个地方要修改。


在init方法中修改颜色可以验证是否配置成功。(清除缓存区)





opengl就是api的工具包,负责图形的渲染。

苹果下没有摄像机,需要手动裁减过来。


opengl是一个状态机,就是学习它的状态。状态就是渲染的状态,改变这些状态可以渲染出来不同的图形。包含颜色,线条的粗细,图形的纹理。


渲染管线:就是说明opengl有一套严格的处理顺序,也就是定点的处理顺序,定点缓冲,颜色,帧缓冲,深度缓冲。




程序入口:layerlass

结束:creatFramebuffer

从这里开始就是我们的渲染上下文设置,渲染上下文主要用来设置颜色缓冲区,深度缓冲区,绘制前的准备工作,再windows中一行代码就可以实现。



layerclass层的作用:这个方法可以实现coreanimation与opengl es之间的连接,重载这个方法,返回caeagllayer层。


确定版本号:initapi:keaglrenderingapiopengles1   1.0 2.0两个版本



函数:creatframebuffer  创建帧缓冲区,颜色缓冲区,将来还有深度缓冲区

操作缓冲区对象步骤:获取,绑定,修改,使用,删除。

缓冲区就是操作的对象,分为颜色缓冲,深度,模板缓冲。颜色缓冲就是在屏幕上显示二进制的颜色。深度缓冲就是模型当中各个点的数据以及位置的信息。


视口就是坐标系,

glloadidentity转换成单位矩阵

glorthof视口大小(前两项是一个x)


Cadisplaylink定时器,相当高效


视口是屏幕外的区域,这才是坐标系,不是画上去的,是投影上去的。

Gldrawarrays绘制函数


glcolor4f 0-1的范围,4ub是0-255。






构建立方体:

线:

两个点,颜色,粗细glLineWith

GL_LINES


三角形:

3个点

GL_TRIANGLES


四边形:

GL_TRIANGLE_FAN

有锯齿现象,可消


打开深度,才能绘制立方体。

glEnable(GL_DEPTH_TEST) 启用Z轴,此函数是一个开关,还可以打开其他的效果。


定点绘制和索引绘制。


逆时针排列。





8个点建立完毕

确定6个面的顺序

这是按照索引来绘制的。


gltramslatef平移


Gldrawelements绘制

远裁减面和近裁减面之间才能绘制。



写在数组中的点,无法修改每个面的颜色。


 



此方法可以修改每个面的颜色。


剔除现象,物体转动后绘制就变成正方向了,就透视了,始终有一个面无法穿透。
























手动创建深度缓冲区:

if(USE_DEPTH_BUFFER)

{

    1.获取标识符

     glGenRenderbuffers(1,&地址1);

    2.绑定深度缓冲区,把这个内存变量绑定到渲染缓冲区的一个区域

     glBindRenderbuffer(GL_RENDERBUFFER_OES,地址1);

     

    填充数据:

glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_DEPTH_COMPONENT16_OES,framebufferWidth,framebufferHeight);

按照屏幕的范围来包含深度缓冲区


  

glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES,GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES,depthRenderbuffer);

绑定到帧缓冲区

}


缓冲区不用的时候要释放:

=0;


在二维中谁先绘制谁就在下面,三维是根据z轴判断的。


glpushmatrix

中间是模型的动作,单独的区域,不影响别人。

glpopmatrix



逆时针:GL_CCW

顺时针:GL_CW


0 0
原创粉丝点击