随笔分类 -  OPENGL

摘要:NameglVertexPointer — define an array of vertex dataC SpecificationvoidglVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer);ParameterssizeSpecifies the number of coordinates per vertex. Must be 2, 3, or 4. The initial value is 4.typeSpecifies the data type of each coordinate 阅读全文

posted @ 2012-03-13 15:46 无忧consume 阅读(966) 评论(0) 推荐(0) |

摘要:// 利用ChangeSize函数在屏幕形状发生改变时重建viewport并且重新设置坐标系#include <GL/glut.h>#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480void ChangeSize(GLsizei w, GLsizei h){GLfloat aspectRatio;// 防止被0除if(h == 0){h = 1;}glViewport(0, 0, w, h);// 重置坐标系统glMatrixMode(GL_PROJECTION);glLoadIdentity();aspectRatio = (GLf 阅读全文

posted @ 2012-03-13 14:47 无忧consume 阅读(177) 评论(0) 推荐(0) |

摘要:首先我们在屏幕中心显示一个矩形,效果如图:// 代码没有经过优化,为的是容易理解public class OpenGLTestActivity extends Activity {GLSurfaceView glView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FL 阅读全文

posted @ 2012-03-13 14:46 无忧consume 阅读(224) 评论(0) 推荐(0) |

摘要:// 首先我们看一下用OpenGL绘制一个矩形<br>#include <GL/glut.h>void display(){// 清除屏幕glClear(GL_COLOR_BUFFER_BIT);// 指定从glBegin到glEnd描述的基元(primitive),在这里是多边形glBegin(GL_POLYGON);// 指定多边形的四个顶点glVertex2f(-0.5, -0.5);glVertex2f(-0.5, 0.5);glVertex2f(0.5, 0.5);glVertex2f(0.5, -0.5);glEnd();// 强制刷新缓冲,保证绘图命令将被 阅读全文

posted @ 2012-03-13 14:45 无忧consume 阅读(258) 评论(0) 推荐(0) |

摘要:OpenGL是一个状态机,尤其是使用固定功能的管线。可以设置它的各种状态(或模式),然后让这些状态一直生效,直到再次修改它们。 每个状态变量(或模式)都有一个默认值。在任何时候都可以向系统查询每个状态变量的当前值。一般情况下,可以使用 glGetBooleanv(),glGetDoublev(),glGetIntegerv(),glGetfloatv(),glGetPointerv(),或glIsEnabled(),之一来完成这个任务。具体选择的函数取决于希望返回的结果的数据类型。 有些状态变量还有更为特定的查询函数,如glGetLight*(),glGetError()或glGet... 阅读全文

posted @ 2012-03-13 14:43 无忧consume 阅读(179) 评论(0) 推荐(0) |

摘要:OpenGL ES 1.0是专门针对嵌入式系统设计的3D图形库,它是从OpenGL 1.3发展而来的。它是OpenGL的一个子集,但也不仅仅是子集,还添加了OpenGL没有的一些内容。两者的主要区别如下:★去掉了多余的API:考虑到灵活性,OpenGL设计了大量不同的函数来完成同一件事情。比如 glColr(),就有30多种不同的形式,而区别仅在于参数的数量和类型不同。ES去掉了大部分这种API,仅留下了一些常用的和一般形式的。比如ES只支持glNormal3f, glColor4f, glMultiTexCoord4f。★去掉了多余的功能有时,OpenGL会有不同的方法来做同一件简单的事情。 阅读全文

posted @ 2012-03-13 14:41 无忧consume 阅读(259) 评论(0) 推荐(0) |

摘要:在《OpenGL Shading Language Second Edition》中发现多纹理在GLSL中的正确使用方法,先看c++源码:view sourceprint?01.glActiveTexture(GL_TEXTURE0);02.glBindTexture(GL_TEXTURE_2D, earthDayTexName);03.04.glActiveTexture(GL_TEXTURE1);05.glBindTexture(GL_TEXTURE_2D, earthNightTexName);06.07.glActiveTexture(GL_TEXTURE2);08.glBindTex 阅读全文

posted @ 2012-03-13 14:30 无忧consume 阅读(656) 评论(0) 推荐(0) |

摘要:顶点数组, glDrawArrays,glDrawElements - [OpenGL]前两天接触OpenGL ES的时候发现里面没有了熟悉的glBegin(), glEnd(),glVertex3f()函数,取而代之的是glDrawArrays()。有问题问google,终于找到答案:因为OpenGL ES是针对嵌入式设备这些对性能要求比较高的平台,因此把很多影响性能的函数都去掉了,上述的几个函数都被移除了。接下来看看这些函数是如何使用的。1.glEnableClientState(GL_VERTEX_ARRAY); 使能顶点数组功能。2.将准备好的数组告知程序,使用glVertexPoin 阅读全文

posted @ 2012-03-13 10:29 无忧consume 阅读(1330) 评论(0) 推荐(0) |

摘要:NameglFrustumf,glFrustumx- multiply the current matrix by a perspective matrixC Specificationvoid glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near, GLfloat far)void glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixe... 阅读全文

posted @ 2012-03-12 01:07 无忧consume 阅读(358) 评论(0) 推荐(0) |

摘要:Name glDrawArrays — render primitives from array dataC SpecificationvoidglDrawArrays(GLenum mode,GLint first,GLsizei count);ParametersmodeSpecifies what kind of primitives to render. Symbolic constantsGL_POINTS,GL_LINE_STRIP,GL_LINE_LOOP,GL_LINES,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN,GL_TRIANGLES,GL_QU. 阅读全文

posted @ 2012-03-12 00:25 无忧consume 阅读(658) 评论(0) 推荐(0) |

摘要:NameglDrawElements — render primitives from array dataC SpecificationvoidglDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices);ParametersmodeSpecifies what kind of primitives to render. Symbolic constantsGL_POINTS,GL_LINE_STRIP,GL_LINE_LOOP,GL_LINES,GL_TRIANGLE_STRIP,GL_TRIANG 阅读全文

posted @ 2012-03-11 23:59 无忧consume 阅读(650) 评论(0) 推荐(0) |

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3