![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opengl
文章平均质量分 73
vampirem
这个作者很懒,什么都没留下…
展开
-
glUseProgram
NameglUseProgram — Installs a program object as part of current rendering stateC Specificationvoid glUseProgram(GLuint program); ParametersprogramSpecifies转载 2013-09-06 11:11:15 · 3411 阅读 · 0 评论 -
glPushAttrib
glPushAttrib(GL_ALL_ATTRIB_BITS); 我们可以将多组属性或者全部属性(GL_ALL_ATTRIBUTE_BITS)通过函数glPushAttrib压入属性堆栈中,恢复则用glPopAttrib。 glPushAttrib()保存由mask指定的所有属性,把它们压入到属性堆栈中。glPopAttrib()恢复上一次调用glPushAttrib()时所转载 2013-09-08 15:34:50 · 6185 阅读 · 0 评论 -
glBlendFunc();--混合
glBlendFunc();--混合OpenGL 会把源颜色和目标颜色各自取出,并乘以一个系数(源颜色乘以的系数称为“源因子”,目标颜色乘以的系数称为“目标因子”),然后相加,这样就得到了新的颜 色。(也可以不是相加,新版本的OpenGL可以设置运算方式,包括加、减、取两者中较大的、取两者中较小的、逻辑运算等,但我们这里为了简单起见,不讨 论这个了) 下面用数学公式来表达一下这个运算方式。转载 2013-09-08 16:02:18 · 522 阅读 · 0 评论 -
glShadeModel
glShadeModel函数用于控制opengl中绘制指定两点间其他点颜色的过渡模式参数一般为GL_SMOOTH(默认),GL_FLATopengl默认是将制定的两点颜色进行插值,绘制之间的其他点如果两点的颜色相同,使用两个参数效果相同如果两点颜色不同,GL_SMOOTH会出现过渡效果,GL_FLAT 则只是以指定的某一点的单一色绘制其他所有点如图可以对比GL_SMOOTH与G转载 2013-09-08 16:08:54 · 685 阅读 · 0 评论 -
glReadPixels glDrawPixels glCopyPixels
1、 BMP文件格式简单介绍BMP文件是一种像素文件,它保存了一幅图象中所有的像素。这种文件格式可以保存单色位图、16色或256色索引模式像素图、24位真彩色图象,每种模式种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节。目前最常见的是256色BMP和24位色BMP。这种文件格式还定义了像素保存的几种方法,包括不压缩、RLE压缩等。常见的BMP文件大多是不压缩的。这转载 2013-09-09 09:23:32 · 973 阅读 · 0 评论 -
vim 多窗口
vim提供多窗口编辑的功能,可以简化复合的编辑任务。vim的多窗口并不是说在终端上启动多个vim实例。启动多窗口编辑vim的多窗口是动态的,可以开始编辑时就打开多窗口,也可以工作时随时增加新窗口,或者删除一个窗口。$ vim -o file1 file2 打开一个编辑会话,显示为水平分割成两半的窗口,一个文件占用一个窗口转载 2013-09-09 09:25:28 · 572 阅读 · 0 评论 -
glDrawPixels
glDrawPixelsThe glDrawPixels function writes a block of pixels to the framebuffer.复制void glDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type,转载 2013-09-09 10:13:03 · 2272 阅读 · 0 评论 -
gluPerspective和gluLookAt
终于搞明白gluPerspective和gluLookAt的关系了函数原型gluLookAt(GLdoble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);gluPerspect转载 2013-09-09 10:14:40 · 664 阅读 · 0 评论 -
再议gluPerspective和gluLookAt的关系
看了Opengl的相关程序,发现有些东西还是特别迷茫,尤其是gluLookAt的函数做啥用的,而gluPerspective又有什么功能.在网上查看到了这篇: 终于搞明白gluPerspective和gluLookAt的关系了(zz)http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/我感觉它里面转载 2013-09-09 10:18:36 · 674 阅读 · 0 评论 -
FBO
Overview: 在OpenGL渲染管线中,几何数据和纹理经过多次转化和多次测试,最后以二维像素的形式显示在屏幕上。OpenGL管线的最终渲染目的地被称作帧缓存(framebuffer)。帧缓冲是一些二维数组和OpenG所使用的存储区的集合:颜色缓存、深度缓存、模板缓存和累计缓存。一般情况下,帧缓存完全由window系统生成和管理,由OpenGL使用。这个默认的帧缓存被称作“windo转载 2013-09-03 15:35:08 · 956 阅读 · 0 评论 -
FBO2
FBO一个最常见的应用就是:渲染到纹理(render to texture),通过这项技术可以实现发光效果,环境映射,阴影映射等很炫的效果。OpenGL中的Frame Buffer Object(FBO)扩展,被推荐用于把数据渲染到纹理对像。相对于其它同类技术,如数据拷贝或交换缓冲区等,使用FBO技术会更高效并且更容易实现。在OpenGL渲染管线中,几何数据和纹理最终都是以2d像素转载 2013-09-03 15:36:11 · 919 阅读 · 0 评论 -
一个大牛写的关于FBO的文章
第一篇,FBO --- Framebuffer ObjectFBO这个名字应该记住,同时还得记住VBO,PBO——这些算得上OpenGL的高级技术了,但是可以说,用处很广。从拓展到即将的核心,证明了它们的价值。这里我主要讲讲FBO(因为最近只用到FBO嘛嘿),全名Frame Buffer Object,目前主要用于离屏渲染技术。不知道是否有人曾经对D3D的RenderTarget技转载 2013-09-04 10:02:59 · 3997 阅读 · 0 评论 -
fbo实现离线渲染流程
通过fbo实现离线渲染流程如下:主渲染流程,使用系统默认的缓冲区对象保存OpenGL现场 —————————>> bind FBO a) glClear 清空FBO对应的各种缓冲区内容 b) 在离线渲染之前,往颜色缓冲区中添加内容,如背景图片 c) set projec转载 2013-09-04 14:16:27 · 1131 阅读 · 0 评论 -
FBO3
概要在OpenGL的渲染管线中,几何数据和纹理通过一系列变换和测试,最终被渲染成屏幕上的二维像素。那些用于存储颜色值和测试结果的二维数组的几何被称为帧缓冲区(frame buffer)。这些二维数组按用途划分,可分为颜色缓冲区(color buffer),深度缓冲区(depth buffer),模版缓冲区(stencil buffer)和累加缓冲区(accumulation buffer)。当转载 2013-09-04 13:24:25 · 858 阅读 · 0 评论 -
FBO4
介绍Frame Buffer Object(FBO)扩展,被推荐用于把数据渲染到纹理对像。相对于其它同类技术,如数据拷贝或交换缓冲区等,使用FBO技术会更高效并且更容易实现。在这篇文章中,我将会快速地讲解一下如何来使用这一扩展,同时会介绍一些在使用过程中我们要注意的地方。学会该技术后,你便可以把一些渲染到纹理(render to texture)的功能加入到你的程序中,实现更快速的运行转载 2013-09-04 14:55:43 · 775 阅读 · 0 评论 -
OpenGL进阶(十二) - 基础着色(Shading)
提要经过前面的关于GLSL基础学习,可以参考OpenGL进阶专栏中的一些文章。接下来的内容将会非常的有意思,比如全局光照,环境贴图,法线贴图,景深....是不是听着就很棒!想要学习的话,当然需要付出更多的努力!不过一切都是值得的。今天的内容主要是关于光照的一些基础着色。 在光照模型中,光照主要由三部分组成:环境光(ambient),漫反射(diffuse),镜转载 2013-09-29 16:54:32 · 1218 阅读 · 0 评论 -
Real-Rime Rendering (2) - 变换和矩阵(Transforms and Matrics)
提要 在图形的计算中,比如旋转、缩放、平移、投影等操作,矩阵都扮演着极其重要的角色,它是操作图元的基本工具。虽然很多的图形API已经封装好了这些矩阵操作,但是理解这些矩阵操作的原理会非常非常有帮助,比如说我们可以通过一些矩阵的快捷计算来加速你的代码。 如果你有一些线性代数的基础,看下面的内容的时候也不会很轻松,因为有点难且比较没意思,如果没有修过这门课,最好把线性代数转载 2013-09-29 16:55:16 · 971 阅读 · 0 评论 -
OpenGL进阶(十一) - GLSL4.x中的数据传递
in out 对于 vertex shader,每个顶点都会包含一次,它的主要工作时处理关于定点的数据,然后把结果传递到管线的下个阶段。 以前版本的GLSL,数据会通过一些内建变量,比如gl_Vertex和gl_Normal,但现在,通常时使用通用顶点属性( generic vertex attributes)来提供,通常和一个Buffer object 想关联。对转载 2013-09-29 16:56:00 · 1244 阅读 · 0 评论 -
【GLSL教程】(五)卡通着色
引言卡通着色可能是最简单的非真实模式shader。它使用很少的颜色,通常是几种色调(tone),因此不同色调之间是突变的效果。下图显示的就是我们试图达到的效果:茶壶上的色调是通过角度的余弦值选择的,这个角度是指光线和面的法线之间的夹角角度。如果法线和光的夹角比较小,我们使用较亮的色调,随着夹角变大,逐步使用更暗的色调。换句话说,角度余弦值将决定色调的强度。在本教程中,我们先介绍逐顶转载 2013-09-17 18:59:56 · 590 阅读 · 0 评论 -
【GLSL教程】(一)图形流水线
这是一些列来自lighthouse3d的GLSL教程,非常适合入门。我将边学习边翻译该教程的内容,同时记录在这里,方便以后查询。流水线概述下图描述了一个简化的图形处理流水线,虽然简略但仍然可以展示着色器编程(shader programming)的一些重要概念。一个固定流水线包括如下功能:顶点变换(Vertex Transformation)这里一个顶点是一个信转载 2013-09-17 18:56:45 · 626 阅读 · 0 评论 -
【GLSL教程】(四)shder的简单示例
GLSL的Hello World这一节中包含一个最基本的shader,它提供如下功能:顶点变换然后使用单一的颜色渲染图元。顶点shader前面已经说过,顶点shader负责完成顶点变换。这里将按照固定功能的方程完成顶点变换。固定功能流水线中一个顶点通过模型视图矩阵以及投影矩阵进行变换,使用如下公式:[cpp] view plaincopyprint?转载 2013-09-17 19:00:06 · 584 阅读 · 0 评论 -
【GLSL教程】(六)逐顶点的光照
引言在OpenGL中有三种类型的光:方向光(directional)、点光(point)、聚光(spotlight)。本教程将从方向光讲起,首先我们将使用GLSL来模仿OpenGL中的光。我们将向shader中逐渐添加环境光、散射光和高光效果。后面的教程中我们将使用逐像素光照以获得更好的效果。接下来我们将实现逐像素的点光和聚光。这些内容与方向光很相近,大部分转载 2013-09-17 19:00:36 · 614 阅读 · 0 评论 -
【GLSL教程】(八)纹理贴图
简单的纹理贴图(Simple Texture)为了在GLSL中应用纹理,我们需要访问每个顶点的纹理坐标。GLSL中提供了一些属性变量,每个纹理单元一个:[cpp] view plaincopyprint?attribute vec4 gl_MultiTexCoord0; attribute vec4 gl_MultiTexCoord1; attribute转载 2013-09-17 19:02:55 · 750 阅读 · 0 评论 -
【GLSL教程】(九)其他说明
法线矩阵在很多顶点shader中都用到了gl_NormalMatrix。这里将介绍这个矩阵是什么,以及它的作用。大部分计算是在视图空间内完成的,主要原因是光照的运算要放在这个空间内,否则一些依赖观察点坐标的效果,比如镜面反射光就很难实现。所以我们需要将法线变换到视图空间。变换一个顶点到视图空间的方法如下:[cpp] view plaincopyprint?转载 2013-09-17 19:03:43 · 582 阅读 · 0 评论 -
【GLSL教程】(七)逐像素的光照
逐像素的方向光(Directional Light per Pixel)这一节将把前面的shader代码改为逐像素计算的方向光。我们需要将工作按照两个shader拆分,以确定哪些是需要逐像素操作的。首先看看每个顶点接收到的信息:•法线•半向量•光源方向我们需要将法线变换到视点空间然后归一化。我们还需要将半向量和光源方向也归一化,不过它们已经位于视点空间中了。这些归一化之后的转载 2013-09-17 19:02:10 · 629 阅读 · 0 评论 -
【GLSL教程】(二)在OpenGL中使用GLSL
设置GLSL这一节讲述在OpenGL中配置GLSL,假设你已经写好了顶点shader和像素shader。如果你还没有准备好,可以从如下网址获得相关内容:http://www.3dshaders.com/home/http://www.opengl.org/sdk/tools/ShaderDesigner/http://developer.amd.com/archive/gpu/re转载 2013-09-17 18:58:26 · 557 阅读 · 0 评论 -
【GLSL教程】(三)在OpenGL中向shader传递信息
引言一个OpenGL程序可以用多种方式和shader通信。注意这种通信是单向的,因为shader的输出只能是渲染到某些目标,比如颜色和深度缓存。OpenGL的部分状态可以被shader访问,因此程序改变OpenGL某些状态就可以与shader进行通信了。例如一个程序想把光的颜色传给shader,可以直接调用OpenGL接口,就像使用固定功能流水线时做的那样。不过,使用OpenGL状态并转载 2013-09-17 18:58:26 · 737 阅读 · 0 评论 -
glBindBuffer
因为工作需要改写了xbmc里面的openGL部分代码,对opengl的API摸出来了些门道,写出来与大家分享,对自己也相当于是做个笔记。openGL API 并不多,常用的也就那么几个,有些API是需要搭配使用的。最经典的搭配莫过于glBegin .. glEnd了。下面是我整理的几个API搭配。 1) glBindBuffer + glVertexPointer+ g转载 2013-09-22 17:13:23 · 6195 阅读 · 0 评论 -
opengl缓冲区
缓冲区对象对于OPENGL来说,很重要,虽然我并不经常用它,在红宝书上它属于高级话题。“在许多OPENGL操作中,我们都向OPENGL发送一大块数据,例如向它传递需要处理得顶点数组数据。传输这种数据可能非常简单,例如把数据从系统的内存中复制到图形卡。但是,由于OPENGL是按照客户机-服务器模式设计的,在OPENGL需要数据的任何时候,都必须把数据从客户机内存传到服务器。如果数据并没有修改,或转载 2013-09-22 17:23:34 · 742 阅读 · 0 评论 -
OPENGL学习笔记整理(一)
正式接触OPENGL也已经超过一年了,自我感觉已经入门了,在菜鸟中也是一只老鸟了。或者也可以自大地说OPENGL太简单了,就一个状态机而已。然而,这个状态机,我又知多少呢。撇开平台的关系,OPENGL整个程序涉及了那些函数呢。有点忘了,赶紧整理了一下。首先,我们先不是面向对象编程,还是面向过程的。虽然面向对象编程很流行了,不过对于理解最简单的OPENGL,用它就太麻烦了。int转载 2013-09-22 17:24:37 · 696 阅读 · 0 评论 -
OPENGL学习笔记整理(二):纹理知多少?
OPENGL玩了这么久,有几个地方一直比较犯晕,纹理就是其中之一。这些年,由于着色语言啊,CUDA的出现,个人感觉复杂的纹理设置可以淘汰了,至少已经处于比较边缘的地方了。还是先从最简单最基本的纹理说起吧。先把红宝书上的 ckecker.c 抄下来。#include GL/glut.h>#include stdlib.h>#include stdio.h>/* C转载 2013-09-22 17:25:35 · 728 阅读 · 0 评论 -
OPENGL学习笔记整理(四):几何图元渲染
近些年来,随着半导体工业的发展,GPU的性能越来越强大,但对几何图元的渲染速度的加快依然十分有限。在这里,我并不是想讨论如何改进硬件以加快速度,而是讨论OPENGL中几种几何图元的渲染方式的特点,即速度和适用环境。我把它们分成三种方式:(a)最基本的几何图元操作,所谓最基本,就是无法再细分,即这里所调用的任何一个单独的函数不能用其它的OPENGL函数或函数组合所替代。 void gl转载 2013-09-22 17:26:43 · 843 阅读 · 0 评论 -
[OpenGL ES 03]3D变换:模型,视图,投影与Viewport
[OpenGL ES 03]3D变换:模型,视图,投影与Viewport罗朝辉 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议前言本来打算直接写教程 04 的,但是想到3D 变换涉及的数学知识较多,往往是很多初学者的拦路虎(比如我自己)。再加上OpenGL ES 2.0 不再提供OpenGL ES 1.0中 3D转载 2013-09-22 17:47:54 · 919 阅读 · 0 评论 -
[OpenGL ES 04]3D变换实践篇:平移,旋转,缩放
[OpenGL ES 04]3D变换实践篇:平移,旋转,缩放罗朝辉 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议前言前文《[OpenGL ES 03]3D变换:模型,视图,投影与Viewport》中已经详细介绍了3D变换相关的数学知识,也讲了基本的模型变换:平移,旋转与缩放,如果你还没有阅读前文或对这些知识还不转载 2013-09-22 17:49:16 · 1275 阅读 · 0 评论 -
pygame1
与Python自带的random、math、time等模块一样,Pygame框架也带有许多模块来提供绘图、播放声音、处理鼠标输入等功能。本章将讲述Pygame提供的基本模块及功能,并假设读者已经具有基本的python编程知识,如果在这方面遇到困难,可阅读“Ivent Your Own Computer Games With Python”这本书。GUI和CLI使用Py转载 2013-09-22 16:06:50 · 833 阅读 · 0 评论 -
OPENGL学习笔记整理(三):缓冲区对象
缓冲区对象对于OPENGL来说,很重要,虽然我并不经常用它,在红宝书上它属于高级话题。“在许多OPENGL操作中,我们都向OPENGL发送一大块数据,例如向它传递需要处理得顶点数组数据。传输这种数据可能非常简单,例如把数据从系统的内存中复制到图形卡。但是,由于OPENGL是按照客户机-服务器模式设计的,在OPENGL需要数据的任何时候,都必须把数据从客户机内存传到服务器。如果数据并没有修改,或转载 2013-09-22 17:25:45 · 796 阅读 · 0 评论 -
[OpenGL ES 01]iOS上OpenGL ES之初体验
一,什么是 OpenGL ES?OpenGL ES 是专门为手持设备制定的 3D 规范,它是 OpenGL 的简化版,该规范由khronos.org制定,目前最新规范版本为3.0。 OpenGL ES 可以在不同手机系统上实现,也可以在浏览器上实现(Web GL)。目前较新的 iOS 支持OpenGL ES 2.0,在这里,我将介绍如何在 iOS 上使用 OpenGL ES 2.0。转载 2013-09-22 17:45:26 · 675 阅读 · 0 评论 -
[OpenGL ES 02]OpenGL ES渲染管线与着色器
前言在前文《[OpenGL ES 01]iOS上OpenGL ES之初体验》中我们学习了如何在 iOS 平台上设置OpenGL ES 环境,主要是设置 CAEAGLLayer 属性,创建 EAGLContext,创建和使用 renderbuffer 和 framebuffer,并知道如何清屏。但实际上并没有真正描绘点什么。在本文中,我们将学习OpenGL ES 渲染管线,顶点着色器和片元着转载 2013-09-22 17:46:30 · 537 阅读 · 0 评论 -
[OpenGL ES 06]使用VBO:顶点缓存
一,VBO简介在前面几篇的示例中,都是通过类似如下代码直接从 CPU 主存中传递顶点数据到 GPU 中去进行运算与渲染的。 glVertexAttrib4f(_colorSlot, color[0], color[1], color[2], color[3]); glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL转载 2013-09-22 17:50:27 · 641 阅读 · 0 评论 -
glew.h
GLEW是一个跨平台的C++扩展库,基于OpenGL图形接口。使用OpenGL的朋友都知道,window目前只支持OpenGL1.1的涵数,但 OpenGL现在都发展到2.0以上了,要使用这些OpenGL的高级特性,就必须下载最新的扩展,另外,不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这数涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数转载 2013-09-24 15:48:40 · 2210 阅读 · 0 评论