码迷,mamicode.com
首页 > 其他好文 > 详细

OpenGL基础概念

时间:2014-11-28 14:11:07      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   使用   sp   for   

基本概念

透视(Perspective)
变换(Transformation)
投影矩阵(Projection Matrix):用于将3D坐标转换为2D屏幕坐标
光栅化(Rasterization): 实际绘制或填充每个顶点之间的像素形成线段
着色器(Shader) 是在图形硬件上执行的单独程序,用来处理顶点和执行光栅化任务
纹理贴图(Texture Mapping)
混合(Blending): 将不同的颜色混在一起
可编程着色器(Programmable Shader)
位平面(bitplane):指一块内存区域,保存了屏幕上每个像素的位信息

计算机图形:变换着色纹理混合

绘图坐标和窗口坐标

视口(viewport): 把绘图坐标映射到窗口坐标
图元(Primitives): 一维或二维的实体或表面(点,直线,多边形)
顶点(Vertex): 空间中的一个位置
视景体(View Volume):视景体外的内容不会被绘制 

投影:

正投影(Orthographic Projection):又名平行投影,此时可以指定的视景体是长方体
透视投影(Perspective Projection):此时指定的视景体是平截头体(Frustum) 

GLSL

GLSL(OpenGL Shading Language)即OpenGL着色语言
这是一种非常类似于C的程序设计语言。但是,GLSL不会对应用程序流程和逻辑进行控制,而是用于渲染操作。 

OpenGL扩展机制:

opengl支持不同硬件厂商扩展API或者枚举
可以动态查询使用的OpenGL支持的扩展,使用GLEW库更简单
代码:

GLint ext_count;
glGetIntegerv(GL_NUM_EXTENSIONS, &ext_count);

// 获得扩展api的字符串名称
glGetStringi(GL_EXTENSIONS, i)

 


数据类型:

bubuko.com,布布扣

错误处理:

GLeunm glGetError(void);

每次只返回一个值,返回后,保存的错误代码被清除
通常:我们要在循环中调用glGetError()函数,直到返回GL_NO_ERROE为止
bubuko.com,布布扣

获得硬件信息:

可以使用下面函数获得硬件厂商的信息 

glGetString(GLenum name)

图形质量还是速度:

void glHint(Glenum target, GLenum mode)

target: 指定要进行修改的行为类型(抗锯齿,纹理压缩质量…),
mode: 指定质量还是速度优先
注意:这是唯一一个行为完全依赖厂商的函数,OpenGL并没有要求函数调用保持一致 

OpenGL状态机:

变量的集合成为管线的状态。状态机是一个抽象的模型,表示一组状态变量的集合 

设置状态变量

void glEnable(GLenum cap)
void glDisable(GLenum cap)
...

获取状态变量

GLboolean glIsEnabled(GLenum cap);
void glGetBooleanv(GLenum pname, GLboolean *params);
void glGetDoublev(GLenum  pname, GLdouble  *params);
void glGetFloatv(GLenum   pname, GLfloat   *params);
void glGetIntegerv(GLenum pname, GLint     *params);

缓冲区:

颜色缓冲区(Color Buffer)
深度缓冲区(Depth Buffer)
模板缓冲区(Stencil buffer)
帧缓冲区(FrameBuffer): 指所有缓冲区一起串联工作,保存了图形硬件为控制屏幕上所有像素颜色和强度需要的全部信息

OpenGL基础概念

标签:style   blog   http   io   ar   color   使用   sp   for   

原文地址:http://www.cnblogs.com/luweimy/p/4128279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!