1、一个对象是指一些选项的集合,代表OpenGL状态的一个子集。
例如:我们可以用一个对象来代表绘图窗口的设置,设置它的大小、支持的颜色、位数等等。
可以把对象看作一个C风格的结构体:
struct object_name{
GLfloat option1;
GLuint option2;
GLchar[] name;
}
2、通常把OpenGL上下文比作一个大的结构体,包含很多子集:
//OpenGL的状态
struct OpenGL_Context{
....
object* object_Window_Target; //设置窗口大小,支持的颜色位数
....
}
3、当前状态只有一份,如果每次显示不同的效果,都重新配置会很麻烦,这时候我们就需要一些小助理(对象),帮忙记录某些状态信息。以便复用。
例如:如果我们有10中子集,每个子集有10种不同的状态,那么我们将需要100个小助理(对象)
4、理解代码
//创建对象
GLuint objectld = 0;
glGenObject(1,&objectld); //给小助理(对象)一个编号
//绑定对象至上下文
glBindObject(GL_WINDOW_TARGET,objectld);//该小助理(对象),这次的工作内容,需要绑定了才确定
//设置GL_WINDOW_TARGET对象的一些选项
glSetObjectOption(GL_WINDOW_TARGET,GL_OPTION_WINDOW_WIDTH,800);
glSetObjectOption(GL_WINDOW_TARGET,GL_OPTION_WINDOW_HEIGHT,800);
//将上下文的GL_WINDOW_TARGET对象设回默认
glBindObject(GL_WINDOW_TARGET,0); //小助理(对象)已经记录了上面的内容,可以休息了。需要查看记录的时候喊他过来就好。
5、总结:改状态,用状态
标签:TARGET,OpenGL,对象,WINDOW,子集,GL From: https://www.cnblogs.com/RedWetPlace/p/17231945.html