• 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。

    1. 容易使用
    2. 灵活性差(隐藏过多细节)
    3. 效率低下

    因此,在OpenGL3.2+的版本中,立即模式被弃用了。

    2.2 核心模式的特点

    1. 难以学习(需要对图形编程有更好的理解)
    2. 灵活
    3. 更高效

    3 扩展(Extensions)

    非常有用和受欢迎的扩展未来可能会集成到OpenGL的更高版本中,在使用扩展的功能前,一般要确认扩展是否存在。

    if(GL_ARB_extension_name){
    	//使用扩展完成功能
    }
    else{
    	//扩展不支持,使用传统方法完成功能
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4 OpenGL中的对象(Object)

    OpenGL中的对象是一些选项的集合,它代表OpenGL状态的一个子集。

    struct object_name{
    	float option1;
    	int option2;
    	char[] name;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实际使用的例子(OpenGL_Context是OpenGL上下文):

    struct OpenGL_Context{
    	...
    	object_name* object_Window_Target;
    	...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    //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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    上述代码展示了OpenGL的工作流程:

    1. 创建对象——glGenObject
    2. 以id的方式存储对象的reference——glBindObject(GL_WINDOW_TARGET, objectId)
    3. 使用id,将对象绑定到context的目标位置``。

    使用对象的好处:一个程序中,我们不止可以定义一个对象,并设置它们的选项,每个对象都可以是不同的设置。在我们执行一个使用OpenGL状态的操作的时候,只需要绑定含有需要的设置的对象即可。

  • 相关阅读:
    2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情
    【跟小嘉学习JavaWeb开发】第二章 Java 程序设计概述
    微信小程序技术分享,以及项目实战:商城花园
    RabbitMQ-高级篇-黑马程序员
    【Hack The Box】windows练习-- blue
    好评较高的图片转文字软件哪个好?这款软件十分好用
    黑苹果外接显示器最优解决方案
    vue3-web端文件下载
    SQL39道代码练习题
    uniapp-vue3-弹出选择组件wo-pop-selector
  • 原文地址:https://blog.csdn.net/weixin_43399489/article/details/126857721