﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-lucky420-随笔分类-OpenGL</title><link>http://www.cppblog.com/lucky420/category/1766.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 21:54:04 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 21:54:04 GMT</pubDate><ttl>60</ttl><item><title>OpenGL 2.1 规范</title><link>http://www.cppblog.com/lucky420/archive/2007/01/29/18128.html</link><dc:creator>随便写写</dc:creator><author>随便写写</author><pubDate>Mon, 29 Jan 2007 01:51:00 GMT</pubDate><guid>http://www.cppblog.com/lucky420/archive/2007/01/29/18128.html</guid><wfw:comment>http://www.cppblog.com/lucky420/comments/18128.html</wfw:comment><comments>http://www.cppblog.com/lucky420/archive/2007/01/29/18128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lucky420/comments/commentRss/18128.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lucky420/services/trackbacks/18128.html</trackback:ping><description><![CDATA[一段时间没注意, OpenGL规范又升级为2.1版了. 主要的更新包括:<br>1. GLSL升级至1.2版<br>2. 支持非正方形的矩阵. UniformMatrix {2x3,3x2,2x4,4x2,3x4,4x3}fv <br>3. 象素缓冲对象(Pixel Buffer Object).&nbsp; 它扩充了缓冲对象的接口.现在缓冲区对象可以支持顶点数组和象素数据了.象素缓冲对象能加速在GPU内存中进行的缓冲区之间的数据拷贝及其他象素操作.<br>4. sRGB纹理. 遵循IEC 61966-2-1.标准的sRGB颜色空间的纹理格式(包括压缩和非压缩格式).<br>
<img src ="http://www.cppblog.com/lucky420/aggbug/18128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lucky420/" target="_blank">随便写写</a> 2007-01-29 09:51 <a href="http://www.cppblog.com/lucky420/archive/2007/01/29/18128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Shader Object及Program操作API</title><link>http://www.cppblog.com/lucky420/archive/2006/05/15/7149.html</link><dc:creator>随便写写</dc:creator><author>随便写写</author><pubDate>Mon, 15 May 2006 01:34:00 GMT</pubDate><guid>http://www.cppblog.com/lucky420/archive/2006/05/15/7149.html</guid><wfw:comment>http://www.cppblog.com/lucky420/comments/7149.html</wfw:comment><comments>http://www.cppblog.com/lucky420/archive/2006/05/15/7149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lucky420/comments/commentRss/7149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lucky420/services/trackbacks/7149.html</trackback:ping><description><![CDATA[
		<span style="COLOR: red">Program:</span>
		<br />1。 GLuint glCreateProgram( void );//创建<br /><br />2。 void glDeleteProgram( GLuint program );//销毁<br /><br />3。 void glGetProgramiv(<br />GLuint program,<br />GLenum pname,<br />GLint *params<br />); //获取参数<br /><br />4。void glGetProgramInfoLog(<br />GLuint program,<br />GLsizei maxLength,<br />GLsizei *length,<br />GLchar *infoLog<br />);//获取Log信息，Log信息在program链接或确认时会更新<br /><br />5。void glLinkProgram(<br />GLuint program<br />);//链接<br /><br />6。void glValidateProgram(<br />GLuint program<br />);//确认，通常只在开发时时有用<br /><br />7。GLboolean glIsProgram(<br />GLuint program<br />);//判断是否是program object<br /><br />8。void glUseProgram(<br />GLuint program<br />);//将program安装到当前状态中<br /><br />9。void glGetAttachedShaders(<br />GLuint program,<br />GLsizei maxCount,<br />GLsizei *count,<br />GLuint *shaders<br />);//获取附加的shader列表<br /><br /><span style="COLOR: red">Shader:</span><br />1。GLuint glCreateShader(<br />GLenum shaderType<br />);//创建<br /><br />2。void glDeleteShader(<br />GLuint shader<br />);//销毁<br /><br />3。void glShaderSource(<br />GLuint shader,<br />GLsizei count,<br />const GLchar **string,<br />const GLint *length<br />);//为shader填充/替换源码,源码可由多个字符串组成<br /><br />4。void glCompileShader(<br />GLuint shader<br />);//编译<br /><br />5。void glGetShaderiv(<br />GLuint shader,<br />GLenum pname,<br />GLint *params<br />);//获取参数<br /><br />6。void glGetShaderInfoLog(<br />GLuint shader,<br />GLsizei maxLength,<br />GLsizei *length,<br />GLchar *infoLog<br />);//获取Log信息，只在编译后更新<br /><br />7。void glGetShaderSource(<br />GLuint shader,<br />GLsizei bufSize,<br />GLsizei *length,<br />GLchar *source<br />);//获取源码，源码长度可以先用glGetShader（GL_SHADER_SOURCE_LENGTH）获取<br /><br />8。GLboolean glIsShader(<br />GLuint shader<br />);//判断是否是shader object<br /><br />9。void glAttachShader(<br />GLuint program,<br />GLuint shader<br />);//将一个shader附加到program<br /><br />10。void glDetachShader(<br />GLuint program,<br />GLuint shader<br />);//将shader从program中去除<br /><br /><span style="COLOR: red">Uniform参数</span><br />1。GLint glGetUniformLocation(<br />GLuint program,<br />const GLchar *name<br />); //获取Uniform变量的位置，它在编译后决定<br /><br />2。glUniform{1|2|3|4}{f|i}, glUniformMatrix{2|3|4}fv ，glUniform{1|2|3|4}{f|i}v<br />//设置Uniform变量值<br /><br />3。void glGetUniform{f|i}v(<br />GLuint program,<br />GLint location,<br />GLint *params<br />);//获取uniform当前值<br /><br />4。void glGetActiveUniform(<br />GLuint program,<br />GLuint index,<br />GLsizei bufSize,<br />GLsizei *length,<br />GLint *size,<br />GLenum *type,<br />GLchar *name<br />);//获取uniform变量熟悉<br /><br /><span style="COLOR: red">Attribute变量</span><br />1。void glBindAttribLocation(<br />GLuint program,<br />GLuint index,<br />const GLchar *name<br />);//绑定一个自定义属性变量位置<br /><br />2。void glGetActiveAttrib(<br />GLuint program,<br />GLuint index,<br />GLsizei bufSize,<br />GLsizei *length,<br />GLint *size,<br />GLenum *type,<br />GLchar *name<br />);//获取属性变量属性<br /><br />3。GLint glGetAttribLocation(<br />GLuint program,<br />const GLchar *name<br />);//获取熟悉变量位置<br /><br />4。glVertexAttrib<br />//设置一个属性变量的值<br /><br />5。glVertexAttribPointer <br />//设置一个属性变量数组<br /><br />6。glGetVertexAttribdv, glGetVertexAttribfv, glGetVertexAttribiv<br />//获取一个属性变量值<br /><br />7。glGetVertexAttribPointer<br />//获取一个属性数组<br /><br />8。void glEnableVertexAttribArray(<br />GLuint index<br />);//使能一个属性数组<br /><br />9。void glDisableVertexAttribArray(<br />GLuint index<br />);//禁用一个属性数组 <img src ="http://www.cppblog.com/lucky420/aggbug/7149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lucky420/" target="_blank">随便写写</a> 2006-05-15 09:34 <a href="http://www.cppblog.com/lucky420/archive/2006/05/15/7149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>渲染到纹理</title><link>http://www.cppblog.com/lucky420/archive/2006/05/15/7147.html</link><dc:creator>随便写写</dc:creator><author>随便写写</author><pubDate>Mon, 15 May 2006 01:29:00 GMT</pubDate><guid>http://www.cppblog.com/lucky420/archive/2006/05/15/7147.html</guid><wfw:comment>http://www.cppblog.com/lucky420/comments/7147.html</wfw:comment><comments>http://www.cppblog.com/lucky420/archive/2006/05/15/7147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lucky420/comments/commentRss/7147.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lucky420/services/trackbacks/7147.html</trackback:ping><description><![CDATA[渲染到纹理实现方式：<br /><br />1. 渲染到帧缓存，然后用glReadPixels将需要的部分读入到客户内存，然后使用glTexImage（）函数创建纹理<br />缺点：比较慢<br /><br />2.渲染到帧缓存，然后使用glCopyTexImage() 直接从帧缓存创建纹理<br /><br />3.渲染到帧缓存，然后使用glCopyTexSubImage() 从帧缓存中读出需要的部分更新纹理的一部分<br /><br />4.使用 pbuffer，直接渲染到纹理<br />需要的扩展：<br />WGL_ARB_extensions_string<br />WGL_ARB_render_texture<br />WGL_ARB_pbuffer<br />WGL_ARB_pixel_format<br />只可以在windows系统上使用<br />每一个pbuffer在不同的OpenGL上下文中工作，管理麻烦<br />pbuffer之间切换开销很大<br /><br />5. 使用 framebuffer object (FBO)扩展: <br />GL_EXT_framebuffer_object <br /><br />6.OpenGL 2.0的新特性之一就是多重渲染目标（Multiple Render Targets），应该能支持直接渲染到纹理吧。还未尝试过。<img src ="http://www.cppblog.com/lucky420/aggbug/7147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lucky420/" target="_blank">随便写写</a> 2006-05-15 09:29 <a href="http://www.cppblog.com/lucky420/archive/2006/05/15/7147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>