GLSL 编程思想
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GLSL 编程思想相关的知识,希望对你有一定的参考价值。
1. 状态机
OpenGL自身是一个巨大的状态机(State Machine),OpenGL的状态通常被称为OpenGL上下文(Context)。
一系列的变量描述OpenGL此刻应当如何运行。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。
假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形。
- 状态设置函数(State-changing Function)
这类函数将会改变上下文。
- 状态使用函数(State-using Function)
这类函数会根据当前OpenGL的状态执行一些操作。
- 对象
OpenGL库内核仍是一个C库。
在OpenGL中一个对象(Object)是指一些选项的集合,它代表OpenGL状态的一个子集。比如,我们可以用一个对象来代表绘图窗口的设置,之后我们就可以设置它的大小、支持的颜色位数等等。可以把对象看做一个C风格的结构体(Struct):
struct object_name
float option1;
int option2;
char[] name;
;
// OpenGL的状态
struct OpenGL_Context
...
object* object_Window_Target;
...
;
2.
eg.
// 创建对象
unsigned int objectId = 0;
glGenObject(1, &objectId);
// 绑定对象至上下文的目标位置
glBindObject(GL_WINDOW_TARGET, objectId);
// 设置当前绑定到 GL_WINDOW_TARGET 的对象的一些选项
glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_WIDTH, 800);
glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_HEIGHT, 600);
// 将上下文对象设回默认,选项就会重新生效
glBindObject(GL_WINDOW_TARGET, 0);
以上是关于GLSL 编程思想的主要内容,如果未能解决你的问题,请参考以下文章