![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL
文章平均质量分 64
speedboy007
我们是一个充满活力激情的团队,拥有5年以上的移动互联网开发经验,专注于移动手机开发iOS,Android开发和产品设计,帮助客户设计UI,UE和开发产品,高质量的代码和文档,优秀的UI设计和体验
展开
-
openGL坐标系
openGL使用右手坐标从左到右,x递增从下到上,y递增从远到近,z递增--------------------------------------------------------------------------------OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正转载 2012-09-06 23:20:57 · 550 阅读 · 0 评论 -
OpenGL 纹理映射
物体表面通常并不是具有简单颜色的平滑面,而是有着花纹图案等丰富细节的。计算机三维图形通过给面贴纹理来表现表面细节。OpenGL默认设置是关闭贴纹理的,所以必须先用命令打开纹理计算。前面提到过,可以给面指定材质来影响面上各点最终的颜色。能不能同时使用材质和纹理呢?当然是可以的,OpenGL允许你用glTexEnv(GL_TEXTUREN_ENV,GL_TEXTURE_ENV_MODE转载 2012-09-07 15:00:18 · 700 阅读 · 0 评论 -
openGL教程 纹理映射
学习 texture map 纹理映射(贴图)有很多好处。比方说您想让一颗导弹飞过屏幕。根据前几课的知识,我们最可行的办法可能是很多个多边形来构建导弹的轮廓并加上有趣的颜色。使用纹理映射,您可以使用真实的导弹图像并让它飞过屏幕。您觉得哪个更好看?照片还是一大堆三角形和四边形?使用纹理映射的好处还不止是更好看,而且您的程序运行会更快。导弹贴图可能只是一个飞过窗口的四边形。一个由多边形构建而来的导弹却转载 2012-09-07 15:13:41 · 830 阅读 · 0 评论 -
openGL 坐标的基本变换
OpenGL通过相机模拟、可以实现计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界。一、OpenGL中的三维物体的显示(一)坐标系统在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽原创 2012-09-07 10:53:06 · 1021 阅读 · 0 评论 -
关于OpenGLES中的glVertexPointer
指定数组顶点用glVertexPointer,指定完了就可以用glDrawArray()来把指定的数组中的顶点绘制出来了。About glVertexPointer(int size,int type,int stride,Buffer pointer)parameters:size: 每个顶点有几个数指描述。必须是2,3 ,4 之一,初始值是4.typ转载 2012-09-07 16:03:03 · 635 阅读 · 0 评论 -
OpengGL 矩阵变换
OpenGL TransformationOverviewGeometric data such as vertex positions and normal vectors are transformed via Vertex Operationand Primitive Assembly operation in OpenGL pipeline before raterizatio翻译 2012-09-09 11:42:35 · 805 阅读 · 0 评论 -
着色模式
设置着色模式着色模式(glShadeModel)实际上是解决实心图形内部空间颜色填充的问题。默认情况下OpenGL是采用渐变着色模式(采用GL_SMOOTH进行设置),若线段的两个端点颜色设置不同,在GL_SMOOTH模式下,线段中间的颜色在两端点之间进行平稳过渡。启用渐变着色模式采用下面的命令:glShadeModel(GL_SMOOTH)。当然我们也可以采用数学方法,完全按照自己的意愿进行转载 2012-09-08 00:36:50 · 2970 阅读 · 0 评论 -
OpenGL ES 绘制多边形
绘制多边形1.glVertexPointer (int size, int type, int stride, Buffer pointer) 第一个参数表示坐标的维数,可以是2或者3,如果是2,则坐标为(x,y),z轴默认为0;如果是3,则坐标为(x,y,z) 第二个参数可以是GL10.GL_FIXED或者GL10.GL_FLOAT,如果是GL10.GL_FI转载 2012-09-10 10:28:35 · 1594 阅读 · 0 评论 -
OpenGL VBO顶点缓冲的使用
OpenGL VBO并不难,但是较繁琐,其实其概念跟加载纹理是一样的:初始化阶段:1. glGenBuffersARB(1, &nVBOVertices); //生成一个句柄2. glBindBufferARB(GL_ARRAY_BUFFER_ARB, nVBOVertices); //声明该句柄为一个vbo句柄,并选择之3. glBufferDataARB(GL_ARRAY_转载 2012-09-12 09:35:01 · 465 阅读 · 0 评论 -
OpenGL中的Blend
Blend 混合是将源色和目标色以某种方式混合生成特效的技术。混合常用来绘制透明或半透明的物体。在混合中起关键作用的α值实际上是将源色和目标色按给定比率进行混合,以达到不同程度的透明。α值为0则完全透明,α值为1则完全不透明。混合操作只能在RGBA模式下进行,颜色索引模式下无法指定α值。物体的绘制顺序会影响到OpenGL的混合处理。 glEnable( GL_BLEND转载 2012-09-13 09:20:01 · 757 阅读 · 0 评论 -
OpenGL中的帧缓存
(本文参考的是《OpenGL编程权威指南》,也就是传说中的“红宝书”)一、缓存的分类1. 颜色缓存 指程序员绘图所用的缓存,分为: 左、右缓存——用于立体感视图(必须要有左缓存); 前、后缓存——用于双缓存(必须要有前缓存); 4个辅助缓存——可选择的、不可显示(程序员可以自己定义和使用它们)。2. 深度缓存 用来存储转载 2012-09-13 09:12:11 · 503 阅读 · 0 评论 -
OpenGL glArrayElement
当我们人为的绘制形状时,首先想到是是坐标点,而不是api,如要绘制一条直线,首先将两个点的坐标存在一起,则更加容易理解,OpenGL的顶点数组就是这样的作用.首先来回顾下之前画直线的函数示例1void drawOneLine(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2){ glBegin(GL_LINES); glVer转载 2012-09-13 15:09:15 · 997 阅读 · 0 评论 -
OpenGL ES 苹果编程指南 官方文档翻译01
OpenGL ES Programming Guide for iOS文章源地址(英文):https://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/翻译 2012-09-13 11:49:22 · 1640 阅读 · 0 评论 -
glDrawArrays 和 glDrawElements 区别?
比如画一个由2个3角形组成的正方形,左上角坐标是l,t,右下角坐标是r,b使用glDrawArrays绘制时,画2个三角形,需要这样传: (l,t),(r,t),(l,b)(r,t),(r,b),(l,b)而用glDrawElements画的话可以这样float coord[4][2]={{l,t},{r,t},{r,b},{l,b}};绘制时:0,原创 2012-09-13 15:14:29 · 8209 阅读 · 0 评论 -
OpenGL学习笔记 显示列表
显示列表是一组存储在一起的OpenGL函数,可以在以后执行。(目的的存储值,那么就不用每次再计算,达到了优化的目的)分配显示列表索引值使用glGenLists来生成一个或多个未使用的索引值创建显示列表以glNewList开始并以glEndList结束如下示例GLuint listName;static void init (void){ li转载 2012-09-19 17:38:38 · 790 阅读 · 0 评论 -
openGL ES view 截屏保存成UIImage
你的应用程序会发送一些openGLES 指令到当前的渲染环境(EAGLContext object),EAGLContext 包含了一些你要渲染目标的一些状态信息。给你的openGL ES view 快照截屏,确保你已经当前的EAGLContext和framebuffer下,然后调用 glReadPixels 从framebuffer中获得像素数据。然后你就可以用这些像素数据创建一个CGImag原创 2012-10-19 14:13:14 · 9995 阅读 · 3 评论 -
什么是渲染
渲染(Render)在电脑绘图中,是指:用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。渲染这个术语类似于“艺术家对于场景的渲染”。另外渲染也用于描述:计算视频编辑文件中的效果,以生成最终视频输出的过程。渲染是三维计算机图形学中的最重要的研究课题之一,并且在实践领域它与其它技术密切相关。在图形流水原创 2012-10-21 14:14:34 · 5781 阅读 · 0 评论 -
OpenGL ES 2.0编程基础
本人在学WebGL,WebGL的资料很少,由于WebGL是OpenGL ES 2.0的子集,所以先学习一下OpenGL ES 2.0的基础知识。OpenGL中既有固定管线处理流程,也可以使用shader进行可编程的管线处理,OpenGL ES 2.0是完全可编程的管线流程,而没有固定管线流程,这给我们增加了更多的灵活度,以前可以让OpenGL替我们做的事情,现在必须要我们在shader中自己去实现转载 2012-10-30 13:26:02 · 688 阅读 · 0 评论 -
旋转、移动OpenGL视坐标系
我们在OpenGL开发中,经常要进行三维的漫游,很多情况下三维的场景的变换只是通过改变模型的旋转角度、平移位置来实现的“假三维”。之所以说这种实现三维漫游的方式是假三维是因为这样做改变了模型的各个顶点的坐标,并且摄像机是不动的,这不符合真实世界中的三维漫游。试想一下,在真是的三维世界中,我们的人眼就是Camera,我们是怎么实现三维漫游的呢?我们通过扭动脖子来实现三维场景的旋转、通过前后左右的移动转载 2012-10-30 14:36:26 · 1410 阅读 · 2 评论 -
OpenGL基础知识
1.相机的位置就是视点。 2.OpenGL绕坐标轴旋转一个正的角度,就是从坐标轴的正半轴看向负半轴,逆时针旋转。 3.默认情况下,OpenGL视点的初始位置就是世界坐标系的原点,默认情况下: a.视点的初始位置位于世界坐标系的原点; b.OpenGL是右手坐标系,视点的初始方向和世界坐标系的Z轴负方向一致,初始视方向垂直于屏幕指向屏幕的内部; c.转载 2012-10-30 14:49:37 · 649 阅读 · 0 评论 -
GLSL 简介
GLSL - OpenGL Shading Language 也称作 GLslang,是一个以C语言为基础的高阶着色语言。它是由 OpenGL ARB 所建立,提供开发者对绘图管线更多的直接控制,而无需使用汇编语言或硬件规格语言。目录 [隐藏] 1 背景2 详细资料2.1 资料类型2.2 运算子2.3 函式和控制结构2.4 编译和执行2.5 G转载 2012-11-01 10:13:29 · 1616 阅读 · 0 评论 -
GLSL语法基础
转载自:http://www.cppblog.com/init/archive/2011/11/20/160579.aspxGLSL语法跟C语言非常相似:1.数据类型:GLSL包含下面几种简单的数据类型float bool :false or tureint向量:vec {2,3,4} 长度为2, 3, 4的float向量bvec {2,3,4}转载 2012-11-01 10:08:20 · 614 阅读 · 0 评论 -
iOS OpenGL 函数renderbufferStorage:fromDrawable:
Create a color renderbuffer. Allocate its storage by calling the context’srenderbufferStorage:fromDrawable: method, passing the layer object as the parameter. The width,height and pixel format are原创 2012-11-02 16:53:14 · 4703 阅读 · 0 评论 -
android GLSurfaceView 异常处理
GLSurfaceView异常信息提示如下:FATAL EXCEPTION: GLThread 8java.lang.IllegalArgumentException: No config chosenat android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.ja转载 2012-10-25 15:44:18 · 7303 阅读 · 0 评论 -
OpenGLES Shader Precision
OpenGL ES 如何获取 shader precision 着色器的精度值 GetShaderPrecisionFormat int range, precision;glGetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_HIGH_FLOAT, &range, &precision);From the OpenGL E原创 2012-11-13 13:52:25 · 1944 阅读 · 0 评论 -
DEV C++的OPENGL环境配置
DEV C++作为一个轻量级的开发工具,相信会有不少朋友会选用它。但是利用它学习OPENGL,摆在第一位置的就是OPENGL函数库的配置。提到配置OPENGL的环境,可谓让人头大,查阅了无数的网站和资料,但编译的时候仍旧出错,往往是下面的错误提示:Undefine reference to 'xxxxx'一大排一大排的,本人折腾了累计有20小时,终于把问题解决,现把解决方案分享如下转载 2012-11-13 15:22:43 · 13139 阅读 · 1 评论 -
iphone EAGL 代表什么
"AGL" is the name of Apple's OpenGL extensions for OS X. I believe "EAGL" is "Embedded AGL".Alternatively, EAGL is Apple's version of EGL. EGL officially refers to the "Khronos Native Platform G原创 2012-11-13 16:09:40 · 893 阅读 · 0 评论 -
glCullFace,GL_CULL_FACE
http://www.dreamingwish.com/dream-2012/glcullface.htmlglCullFace:指定剔出操作的多边形面 C语言描述 void glCullFace(GLenum mode); 参数 mode 指定应剔除多边形的哪一个面,不是GL_FRONT就是GL_BACK。 说明 本函数可以禁用多边形正面转载 2012-11-13 15:17:40 · 9527 阅读 · 0 评论 -
EAGLLayer.opaque 设置为 YES
By default, CALayers are set to non-opaque (i.e. transparent). However, this is bad for performance reasons (especially with OpenGL), so it’s best to set this as opaque when possible.Improving C原创 2012-11-13 16:32:49 · 1264 阅读 · 0 评论 -
OpenGL渲染管线
转载自www.hiwebgl.com 渲染管线的处理流程开始于建立顶点数组(Vertex Array)。这些数组包括了顶点属性(例如顶点在3D空间中的位置)和顶点纹理信息、颜色信息和如何接受光照(顶点法线)。这些顶点数组和其中包含的数转载 2012-11-02 14:51:34 · 685 阅读 · 0 评论 -
gluBuild2DMipmaps()与glTexImage2D()的使用方法及区别
说明:两者的都是生成纹理,即:将载入的位图文件(*.bmp)转换成纹理贴图。glTexImage2D()的用法举例glTexImage2D(GL_TEXTURE_2D, //此纹理是一个2D纹理0, //代表图像的详细程度, 默认为0即可 3,转载 2012-11-29 16:40:27 · 1062 阅读 · 0 评论 -
glTexParameteri()
L——纹理过滤函数glTexParameteri() 图象从纹理图象空间映射到帧缓冲图象空间(映射需要重新构造纹理图像,这样就会造成应用到多边形上的图像失真),这时就可用glTexParmeteri()函数来确定如何把纹理象素映射成像素. 部分参数功能说明如下: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,转载 2012-11-29 16:57:00 · 773 阅读 · 0 评论 -
纹理定义
12.2.1 二维纹理定义的函数 void glTexImage2D(GLenum target,GLint level,GLint components, GLsizei width, glsizei height,GLint border, GLenum format,GLenum type, const GLvoid *pixels)转载 2012-11-30 16:46:27 · 2524 阅读 · 0 评论 -
UV坐标
1.什么是uv坐标 所有的图象文件都是二维的一个平面。水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系。我们可以定位图象上的任意一个象素。但是一个问题是如何把这个二维的平面贴到三维的NURBS表面和多边形表面呢? 对于NURBUS表面。由于他本身具有UV参数,尽管这个UV值是用来定位表面上的点的参数,但由于它也是二维的,所以很容易通过换算把表面上的点和平面图象上的象素对应起来转载 2012-12-03 15:56:11 · 1218 阅读 · 0 评论 -
glEnable/glDisable(GL_CULL_FACE)与glCullFace()
glEnalbe(GL_CULL_FACE) 开启剔除操作效果glDisable(GL_CULL_FACE) 关闭剔除操作效果 剔除操作1.glCullFace()参数包括GL_FRONT和GL_BACK。表示禁用多边形正面或者背面上的光照、阴影和颜色计算及操作,消除不必要的渲染计算。例如某对象无论如何位置变化,我们都只能看到构成其组成的多边形的某一面时,可使用该函数。转载 2012-11-20 12:04:50 · 5321 阅读 · 0 评论 -
glTexImage2D()
二维纹理定义的函数void glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width,转载 2012-12-03 15:04:21 · 1944 阅读 · 0 评论 -
GL_NEAREST 和 GL_LINEAR
OPENGL TEXTURE DIFFERENCE BETWEEN GL_LINEAR AND GL_NEARESTsource: http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.htmlComments [0]Suppose a pic转载 2012-12-03 15:18:51 · 4483 阅读 · 0 评论 -
Mipmaps 级别
For each mipmap level of an image, we divide the output mipmap into fixed size bricks (Fig. 1), and save all the bricks of one mipmap level to one file.Fig. 1For each output mipmap,转载 2012-12-05 12:01:01 · 1268 阅读 · 0 评论 -
opengl 2D绘图
对齐像素字节函数glPixelStorei (GL_UNPACK_ALIGNMENT, 1)对载入的纹理的画质和色彩有什么影响吗?对画面色彩没有影响,glPixelStorei (GL_UNPACK_ALIGNMENT, 1)控制的是所读取的图像数据的行对齐方式.默认4字节对齐,即一个行的图像数据字节数必须是4的整数倍. 即对RGB 3字节象素而言,若一行10个象素,30个字节,在4字转载 2012-12-06 10:50:34 · 1086 阅读 · 0 评论 -
CxImage与OpenGL结合,用于读入多种格式的纹理以及用来把屏幕保存为各种格式的图像文件
关于CxImage的文章,网上有许多,这里只介绍如何把CxImage与OpenGL结合起来,用于读入多种格式的纹理以及用来把屏幕保存为各种格式的图像件。支持的格式有:BMP,GIF,ICO,JP2,FPC,FPG,PCX,PNG,PNM,RAS,TGA,TIF等等。支持读入透明纹理。CxImage官方网站:http://www.xdp.it///使用CxImage来为Ope转载 2012-12-06 11:14:47 · 803 阅读 · 0 评论