代码之家  ›  专栏  ›  技术社区  ›  BeardlessDev

C++和OpenGL对象之间的区别

  •  0
  • BeardlessDev  · 技术社区  · 1 年前
    unsigned int VBO;
    glGenBuffers(1, &VBO);  
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    
    

    我以为物体是由 ClassName objectName .我没能理解这个

    1 回复  |  直到 1 年前
        1
  •  4
  •   datenwolf    1 年前

    “对象”一词是高度抽象的,与任何特定的事物都没有联系。在编程中,对象有多种形式,OpenGL对象与C++对象绝对没有任何关系。事实上,每当人们试图创建C++包装器,试图为OpenGL对象提供C++接口时,他们很快就会发现,这两个概念很难调和。

    OpenGL对象是OpenGL上下文的一部分。要使用这些“东西”,必须使上下文成为当前的,然而,这只发生在进行调用的线程上;这意味着,如果你要用C++包装OpenGL对象,对于每次访问它,你都必须检查调用是否真的是从一个绑定了相关上下文的线程中进行的。如果不是这样的话,以某种方式处理它。 省省麻烦吧,不要试图在心理上或程序上把这些不同的概念结合在一起。