OpenGL 自制API 4

1、  由于模型和视图的变换都通过矩阵运算来实现,在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”。设置的方法是以GL_MODELVIEW为参数调用glMatrixMode函数,像这样:

glMatrixMode(GL_MODELVIEW);

2、通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。这也只需要一行代码:

glLoadIdentity();

3、glTranslate*,把当前矩阵和一个表示移动物体的矩阵相乘。三个参数分别表示了在三个坐标上的位移值。

4、glRotate*,把当前矩阵和一个表示旋转物体的矩阵相乘。物体将绕着(0,0,0)到(x,y,z)的直线以逆时针旋转,参数angle表示旋转的角度。

5、glScale*,把当前矩阵和一个表示缩放物体的矩阵相乘。x,y,z分别表示在该方向上的缩放比例。

6、gluLookAt ,如果要改变观察点的位置,除了配合使用glRotate*和glTranslate*函数以外,还可以使用这个函数:gluLookAt。它的参数比较多,前三个参数表示了观察点的位置,中间三个参数表示了观察目标的位置,最后三个参数代表从(0,0,0)到(x,y,z)的直线,它表示了观察者认为的“上”方向。

7、投影变换就是定义一个可视空间,可视空间以外的物体不会被绘制到屏幕上。(注意,从现在起,坐标可以不再是-1.0到1.0了!)

OpenGL支持两种类型的投影变换,即透视投影和正投影。投影也是使用矩阵来实现的。如果需要操作投影矩阵,需要以GL_PROJECTION为参数调用glMatrixMode函数。

glMatrixMode(GL_PROJECTION);

通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。

glLoadIdentity();

8、使用glViewport来定义视口。其中前两个参数定义了视口的左下脚(0,0表示最左下方),后两个参数分别是宽度和高度。

时间: 2024-10-14 07:32:32

OpenGL 自制API 4的相关文章

OpenGL 自制API gluPerspective

函数原型gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar) 首先得设置gluPerspective,来看看它的参数都表示什么意思fovy,这个最难理解,我的理解是,眼睛睁开的角度,即,视角的大小,如果设置为0,相当你闭上眼睛了,所以什么也看不到,如果为180,那么可以认为你的视界很广阔,aspect,这个好理解,就是实际窗口的纵横比,即x/yzNear,这个呢,表示你近处,的裁面,zFar表示远处的

OpenGL 自制API 3

颜色: RGBA模式中,每一个像素会保存以下数据:R值(红色分量).G值(绿色分量).B值(蓝色分量)和A值(alpha分量).其中红.绿.蓝三种颜色相组合,就可以得到我们所需要的各种颜色,而alpha不直接影响颜色,它将留待以后介绍. 在RGBA模式下选择颜色是十分简单的事情,只需要一个函数就可以搞定. glColor*系列函数可以用于设置颜色,其中三个参数的版本可以指定R.G.B的值,而A值采用默认:四个参数的版本可以分别指定R.G.B.A的值.例如: void glColor3f(GLfl

OpenGL 自制API 2

多边形: 逆时针方向为正面,反之亦然. 1.glPolygonMode(GL_FRONT, GL_FILL);                        // 设置正面为填充方式 2.glPolygonMode(GL_BACK, GL_LINE);                          // 设置反面为边缘绘制方式 3.glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 设置两面均为顶点绘制方式 4.glFrontFace(GL_CCW)

OpenGL 自制API (1)

glVertexAttribPointer( GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride,const GLvoid * pointer); 参数: pointer 指定一个指针,指向数组中第一个顶点属性的第一个组件.初始值为0. stride 指定连续顶点属性之间的偏移量.如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的.初始值为0. normalized 指定当被访问时,固定点数

call to OpenGL ES API with no current context 和Fatal signal 11

近日在用cocos2dx3.4的时候使用了JNI调用,发现一个现象 当不使用jni的时候完全正常,使用了jni后回去的所有文字都变成黑块,并且有概率程序崩溃,附带出了两个log call to OpenGL ES API with no current context  和 Fatal signal 11 但同样的cocos2dx ,同样的jni代码,另一个项目却正常.找寻了好久之后发现了原因 cocos2dx 3.x以后版本 不再是一个进程跑到底: 引用:"Cocos2d-x从2.x版本到上周

【转】OPENGL基本API概述

本文信息资源来源于网络,欢迎转载!转载时请保留本文链接(http://www.shopliyang.com.cn/)! OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库. gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果数学功底好,在不用glu的情况下,也是可以做出同样的效果.glut是基本的窗口界面, 是独立于gl和glu的,如果不喜欢用glut可以用MFC和Win32窗口等代替:但是

OpenGL ES API with no current context

这个问题是因为Android在启动cocos2d-x的Thread时,没有用context的主的Thread,而是使用的OpenGL的Thread,所以我们不能在主Thread去完成 本应该是在cocos2dx中OpenGL Thread中 完成的工作(即所调用的函数在Cocos2dx中做的工作), 必须使用OpenGL的Thread去完成︰ public static native void nativeCallback(String code, String params); //原本程序中

OpenGL的API函数使用手册

(一)OpenGL函数库 格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有 gl.glu.aux.glut.wgl.glx.agl 等等. 1.核心函数库主要可以分为以下几类函数 (1) 绘制基本的几何图元函数.如:glBegain(). (2) 矩阵操作.几何变换和投影变换的函数.如:矩阵入栈glPushMatrix(),还有矩阵的出栈.转载.相乘,此外还有几何变换函数glTranslate*(),投影变换函数glOrtho()和

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