OpenGL概述(核心模式与立即模式、扩展、OpenGL中的对象)
生活随笔
收集整理的這篇文章主要介紹了
OpenGL概述(核心模式与立即模式、扩展、OpenGL中的对象)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 關于OpenGL的理解
OpenGL本身不是一個API,而是一個規范。
OpenGL是一個巨大的狀態機(state machine),它是定義OpenGL現在該如何工作的變量的集合。
- OpenGL的狀態state通常指的是OpenGL的語境context,我們通過設置一些選項改變OpenGL的狀態,以操作一些buffers并使用當前的context渲染。
2 核心模式(Core-profile)與立即模式(Immediate mode)
2.1 立即模式特點
Immediate mode也稱作fixed function pipeline。
因此,在OpenGL3.2+的版本中,立即模式被棄用了。
2.2 核心模式的特點
3 擴展(Extensions)
非常有用和受歡迎的擴展未來可能會集成到OpenGL的更高版本中,在使用擴展的功能前,一般要確認擴展是否存在。
if(GL_ARB_extension_name){//使用擴展完成功能 } else{//擴展不支持,使用傳統方法完成功能 }4 OpenGL中的對象(Object)
OpenGL中的對象是一些選項的集合,它代表OpenGL狀態的一個子集。
struct object_name{float option1;int option2;char[] name; };實際使用的例子(OpenGL_Context是OpenGL上下文):
struct OpenGL_Context{...object_name* object_Window_Target;... } //create object unsigned int objectId=0; glGenObject(1,&objectId); // bind/assign object to context glBindObject(GL_WINDOW_TARGET, objectId); // set options of the object bound to GL_WINDOW_TARGET glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_WIDTH, 800); glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_WIDTH, 600); //set context target back to default glBindObject(GL_WINDOW_TARGET,0);上述代碼展示了OpenGL的工作流程:
使用對象的好處:一個程序中,我們不止可以定義一個對象,并設置它們的選項,每個對象都可以是不同的設置。在我們執行一個使用OpenGL狀態的操作的時候,只需要綁定含有需要的設置的對象即可。
總結
以上是生活随笔為你收集整理的OpenGL概述(核心模式与立即模式、扩展、OpenGL中的对象)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win+TexLive2020+TexS
- 下一篇: 基于ASP.NET的教师教学质量评价反馈