Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 理解OpenGL_C++_C_Opengl - Fatal编程技术网

C++ 理解OpenGL

C++ 理解OpenGL,c++,c,opengl,C++,C,Opengl,我有一些关于OpenGL的基本观点/问题,不完全涉及代码,也涉及概念。如果您能回答、肯定或详述其中任何一项,我将不胜感激。我警告你,有些人可能很幼稚,所以请容忍我 我知道OpenGL只是一个标准,而不是一个软件。例如,“获取”OpenGL实际上涉及到获取第三方实现,而这不一定需要得到Khronos的认可 OpenGL通常指的是GL实用工具(GLU)和GL实用工具工具包(GLUT)的组合。它们有以glu和glut开头的方法,分别是。而“基本”的OpenGL方法,从简单的gl开始,是由那些制作图形驱

我有一些关于OpenGL的基本观点/问题,不完全涉及代码,也涉及概念。如果您能回答、肯定或详述其中任何一项,我将不胜感激。我警告你,有些人可能很幼稚,所以请容忍我

  • 我知道OpenGL只是一个标准,而不是一个软件。例如,“获取”OpenGL实际上涉及到获取第三方实现,而这不一定需要得到Khronos的认可

  • OpenGL通常指的是GL实用工具(GLU)和GL实用工具工具包(GLUT)的组合。它们有以
    glu
    glut
    开头的方法,分别是。而“基本”的OpenGL方法,从简单的
    gl
    开始,是由那些制作图形驱动程序的人来实现的,例如NVIDIA

  • 我假设
    glut
    方法是特定于操作系统的助手,例如
    glutKeyboardFunc()
    必须是,才能解释键盘。因此,如果我想要一种更强大的解释键盘输入的替代方法,我只会使用OSAPI。OpenGL本身纯粹是关于图形的,但是glut有这种东西,因为图形离不开实时的人类控制

  • 在我看来,
    glu
    方法可能与调用一系列较低级别的
    gl
    方法相同。我想引用的一个例子是
    glOrtho()
    glupspective()
    。在我看来,它们的工作方式类似,但计算透视图可能更复杂,因此
    glupperspective()
    是为了方便起见,但可能只是解决一些
    gl
    方法

  • 我在大学里学习过使用freeglut的基本OpenGL,我一直有一种使用OpenGL的“硬核”方式,只使用低级方法。我不知道这是否是一个完全幼稚的想法,但是否有一种“专业”的方式来编写OpenGL,以发挥其最大的功能?比如,游戏开发者大概不会使用
    glutPostRedisplay()
    ,对吧?这看起来太简单和方便了,好像它隐藏了很多正在发生的事情。我怀疑C++也是如此,因为GLUT回调对命名空间中的方法不友好(正如我在其他问题中看到的)。


  • 您似乎对OpenGL和tookit有很好的了解。不知道还有什么要说。 我想(5)是人们可以评论的地方

    根据您正在构建的应用程序的类型,您认为有些人将选择仅使用本机GL调用构建其应用程序是正确的

    例如,如果在Windows下构建一个具有OpenGL视图、但也有标准菜单和工具栏的单个文档应用程序,那么你很有可能直接去C++和所谓的“低级”API。 然而,如果你在全屏模式下构建一个低节奏的游戏,没有真正的理由不应该使用Glut或任何其他工具包,如果它可以简化应用程序的开发

    事实上,你直接使用过量或低级别呼叫并不能让应用变得更好或更糟:)

    希望能有所帮助

    \一,。我知道OpenGL只是一个标准,而不是一个软件。例如,“获取”OpenGL实际上包括获取 第三方实现,不必 由Khronos背书

    的确如此

    \二,。OpenGL通常指的是GL实用工具(GLU)和GL实用工具工具包(GLUT)的组合。他们的方法是从
    glu
    glut
    ,分别为。以及开始的“基本”OpenGL方法 通过简单的
    gl
    ,由那些制作图形驱动程序的人来实现, i、 英伟达

    不是。OpenGL只是以
    gl…
    开头的函数。其他所有东西(GLU、GLUT)都是第三方库,OpenGL没有涵盖

    \三,。我假设
    glut
    方法是特定于操作系统的助手,例如
    glutKeyboardFunc()
    必须是,才能解释键盘。所以如果我 我想找到一种更强大的解释键盘输入的替代方法 只需要使用操作系统API。OpenGL本身纯粹是关于图形的,但是
    glut
    有这样的功能,因为图形没有太多功能 实时人工控制

    对。GLUT是一个非常简单的框架,因此强烈建议使用其他框架

    \四,。在我看来,
    glu
    方法可能与调用一系列较低级别的
    gl
    方法相同。我想引用一个例子 是
    glOrtho()
    glutperspective()

    我想你指的是
    2d
    ,但是的,你是对的
    glOrtho
    是一个真正的OpenGL-1函数。在某种程度上,
    gluOrtho2D
    是有史以来最无用的函数之一:

    void gluOrtho2D(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top)
    {
        glOrtho(left, right, bottom, top, -1, 1);
    }
    
    在我看来,他们似乎也有类似的想法 工作方式,但计算透视图可能更复杂,所以
    glupperspective()
    是为了方便起见,但可能只是解决了一些问题
    gl
    方法

    没错,但其实很简单:

    gluPrespective(GLfloat fov, GLfloat aspect, GLfloat near, GLfloat far)
    {
        GLfloat a = 0.5 * atan(fov);
        glFrustum(-a*near, a*near, -a*near/aspect, a*near/aspect, near, far);
    }
    
    从OpenGL-3内核开始,整个矩阵操作的东西都被删除了。在任何严肃的应用程序中,它都没有什么用处,因为您将自己管理矩阵

    \五,。我在大学里学习过使用freeglut的基本OpenGL,我一直有一种使用OpenGL的“硬核”方式,使用 只有低级方法。我不知道这是否是一个完全幼稚的想法 但是有没有一种“专业”的方式来编写OpenGL呢 它的最大功能是什么?大概是游戏开发者吧 例如,不会使用
    glutPostRedisplay()
    ,对吗

    是的,这是可能的,大多数游戏引擎确实自己完成所有的繁重工作。 还有libSDL,它也包括OpenGL。就我个人而言,我更喜欢GLFW或自己做的东西,事实上。然而,这并不会改变使用Op的方式