入门

来自OpenGL Wiki
跳转到导航 跳转到搜索

那么您想利用OpenGL API的强大功能吗?如果您因为游戏或软件使用OpenGL API而访问此页面,则需要安装适当的图形驱动程序,以便使用提供的功能。

要使用OpenGL API编程,您需要驱动程序和开发包(取决于平台和编程语言)。更多特定于平台的详细信息将在以下章节中介绍。

常见问题解答[编辑]

此Wiki维护OpenGL的FAQ页面。

下载OpenGL[编辑]

在所有三种主要桌面平台(Linux、macOS和Windows)中,OpenGL或多或少都随系统提供。然而,你需要确保您已经下载并安装了图形硬件的最新驱动程序。

窗户[编辑]

相应的Windows驱动程序网站:

一些网站还发布图形驱动程序的beta版,在制造商发布正式驱动程序之前,您可以通过该版本获得错误修复或新功能:

如果没有驱动程序,您将默认使用OpenGL 1.1的软件版本(在Win98、ME和2000上)、支持OpenGL 1.0(WinXP)的Direct3D包装器或支持OpenGL1.1(Windows Vista和Windows 7)的Direct三维包装器。这些选项都不是特别快,所以安装驱动程序总是一个好主意。

如果您的系统不包含GPU,或者GPU供应商提供的图形驱动程序提供的OpenGL支持太旧,对您来说毫无用处,那么您可能需要考虑在系统上安装Mesa3D OpenGL库。有关详细信息,请参阅此wiki链接:

Linux操作系统[编辑]

Linux上的图形几乎完全是使用X Window系统实现的。在Linux上支持OpenGL涉及到对X服务器使用GLX扩展。Linux上有一个为OpenGL定义的标准应用程序二进制接口,它为OpenGL的一系列驱动程序提供了应用程序兼容性。此外,直接渲染基础结构(DRI)是一个驱动程序框架,它允许在标准框架内编写驱动程序并进行互操作,以轻松支持硬件加速,DRI包含在XFree86 4.0中,但可能需要在安装后配置特定于卡的驱动程序。这些天来,由于XFree86的许可证发生了变化,XFree86被拒绝支持XOrg,因此许多开发人员离开了XFree86,加入了XOrg小组。流行的Linux发行版现在带有XOrg。

供应商对Linux上的驱动程序有不同的方法,一些支持使用DRI的开源工作,另一些支持闭源框架,但所有方法都支持标准ABI,这将允许正确编写的OpenGL应用程序在Linux上运行。

有关在Linux上开发OpenGL应用程序的更多信息,请参阅平台细节:Linux

macOS操作系统[编辑]

与操作系统和OpenGL实现通常单独更新的其他平台不同,OpenGL更新包含在macOS系统更新中。要在macOS上获得最新的OpenGL,用户应该升级到最新的OS版本,可以在苹果网站.

对于开发人员来说,macOS的默认安装不包括任何OpenGL头文件,也不包括其他必要的开发工具。这些是由一个名为Xcode的单独开发人员工具包安装的。此安装程序包括OpenGL头文件、编译器(gcc)、调试器(gdb)、Apple的Xcode IDE,以及许多对OpenGL应用程序开发有用的性能工具。

有关在macOS上开发OpenGL应用程序的更多信息,请参阅平台细节:macOS.

编写OpenGL应用程序[编辑]

第一步是选择你的语言。OpenGL的绑定存在于许多语言中,从C#和Java到Python和Lua。有些语言有多组OpenGL绑定,但没有一个是官方的。它们最终都基于C/C++绑定。

如果不使用C/C++,则必须下载并安装包含OpenGL绑定的所选语言的包或库。有些是预先安装的,但其他的有单独的下载。

如果您正在使用C/C++,那么必须首先设置一个可以链接到OpenGL的生成环境(Visual Studio项目、GNU生成文件、CMake文件等)。在Windows下,您需要静态链接到一个名为OpenGL32.lib的库(请注意,如果您正在构建64位可执行文件,则仍然链接到OpenGL32.lib。“32”部分没有意义)。Visual Studio和大多数Windows编译器都附带此库。

在Linux上,需要链接到libGL。这是通过命令行参数“-lGL”完成的。

初始化[编辑]

在程序中实际使用OpenGL之前,必须先对其进行初始化。因为OpenGL是平台相关的,所以没有标准的方法来初始化OpenGL;每个平台的处理方式都不同。非C/C++语言绑定也可以以不同的方式处理这些问题。

OpenGL初始化分为两个阶段。第一阶段是创建OpenGL上下文; 第二阶段是加载所有必要的函数以使用OpenGL。一些非C/C++语言绑定将它们合并为一个绑定。

OpenGL上下文创建[编辑]

OpenGL上下文表示所有OpenGL。创建一个平台是非常特定的,也是特定于语言绑定的。

如果您正在为OpenGL使用C/C++语言绑定,则强烈建议您使用窗口工具箱用于管理此任务。这些库创建一个窗口,将OpenGL上下文附加到此窗口,并管理该窗口的基本输入。一旦您熟悉OpenGL,就可以开始学习如何手动执行此操作.

大多数非C/C++语言绑定都会为您提供特定于语言的机制来创建上下文。

获取函数[编辑]

如果您使用的是非C/C++语言绑定,那么该绑定的维护者已经将其作为上下文创建的一部分来处理了。如果您正在使用C/C++,请继续阅读。

为了使用OpenGL,必须获取OpenGL API函数。对于您熟悉的大多数库,只需#包含一个头文件,确保将一个库链接到您的项目或makefile中,并且一切正常。OpenGL不是这样工作的。

出于与本讨论最终无关的原因,您必须通过特定于平台的API调用手动加载函数。这项样板工作是用各种OpenGL加载库; 这些使这个过程顺利进行。你是强烈地建议使用一个。

但是,如果您想手动执行此操作,则有一个关于如何手动加载函数的指南。您仍然应该使用扩展加载器。

使用OpenGL[编辑]

OpenGL是一个渲染库。OpenGL不做的是保留有关“对象”的信息。OpenGL所看到的只是一个三角形球和一个状态包,可以用来渲染它们。它不记得您在一个位置画了一条线,在另一个位置绘制了一个球体。

因此,使用OpenGL的一般方法是绘制需要绘制的所有内容,然后使用与平台相关的缓冲区交换命令显示此图像。如果需要更新图像,则需要重新绘制所有内容,即使只需要更新图像的一部分。如果你想让物体在屏幕上移动,你需要一个循环来不断地清除和重画屏幕。

有一些技术可以只更新屏幕的一部分。您可以将OpenGL与这些技术结合使用。但OpenGL本身并不是在内部实现的;必须记住你在哪里画的所有东西。您必须找出需要更新的内容,并只清除屏幕的这一部分。等等

有很多教程和其他材料可用于学习如何使用OpenGL,无论是在此wiki上还是在线上。

OpenGL查看器[编辑]

这些是您安装和运行的程序,它们为您提供特定于系统实现的OpenGL API的信息,如系统、供应商、渲染器、扩展列表、支持的视口大小、线条大小、点大小,以及许多其他详细信息。有些可能包括基准。有些是独立的基准。

教程和操作指南[编辑]

用户提供的教程和入门指南

按主题

开发工具[编辑]

  • 呈现文档-免费的独立图形调试器。仅支持OpenGL 3.2+核心配置文件。适用于Windows和Linux。
  • Nsight Visual Studio版-Nsight 3.0支持OpenGL 4.2调试和评测,以及Shader Debugging和Pixel History
  • 德莱克-Visual Studio Deleaker发现OpenGL泄漏
  • api跟踪-独立的多帧图形调试器。在Windows、Linux和OS X上支持OpenGL 1.0-4.5。

另请参见[编辑]

外部链接[编辑]