从Cygwin下的OpenGL开始

时间:2008-08-18 08:48:34

标签: opengl cygwin

是否可以从Cygwin下编译和运行OpenGL程序?如果是,怎么样?

4 个答案:

答案 0 :(得分:13)

可以在Cygwin下编译和运行OpenGL程序。我在这里说明基本步骤:

  1. 我假设您了解OpenGL编程。如果没有,请获取Red Book OpenGL编程指南)。无论如何,这是OpenGL的必读书。

  2. 我假设你安装了Cygwin。如果没有,请访问cygwin.com并安装。

  3. 要编译和运行OpenGL程序,需要名为 opengl 的Cygwin软件包。在Cygwin安装程序中,可以在图形部分下找到它。请安装此软件包。

  4. 编写一个简单的OpenGL程序,比如 ogl.c

  5. 使用标志 -lglut32 -lglu32 -lopengl32 编译程序。 (这将您的程序与GLUT,GLU和OpenGL库链接.OpenGL程序通常可以使用其中3个函数。)例如:

      

    $ gcc ogl.c -lglut32 -lglu32 -lopengl32

  6. 运行程序。就这么简单!

答案 1 :(得分:2)

如果上述方法不起作用(并且不适合我),请尝试以下方法(确实如此!)

gcc ogl.c -lglut -lglu -lgl

答案 2 :(得分:1)

我记得几年前取得了一些成功,基本上试图交叉编译一个小的Linux OpenGL C ++程序。我确实记得Windows OpenGL驱动程序落后于时代的问题(由于MS专注于DirectX)。我在我的Windows系统上安装了NVidia OpenGL和DirectX驱动程序,但是cygwin / g ++似乎只想使用多年前的Microsoft OpenGL DLL,它们没有对所有ARB扩展的最新支持,比如着色器程序等。 .YMMV。

答案 3 :(得分:1)

我通常不会发布这么长的答案,但这是值得的。

我将介绍 CygwinWindows 10 64 位 设置,它使用 Visual Studio 相同的库 >.您将能够使用具有相同代码(相同的包含和库)的两种开发环境,因此您可以根据需要在两者之间切换。

您需要三个库:OpenGLGLEWGLFW

  1. OpenGL

Visual Studio:以下默认位置对当前版本的 Windows 10 和 Visual Studio 2019 有效。

OpenGL 静态库:

C:\Program Files(x86)\Microsoft Visual Studio\2019\Community\SDK\ScopeCPPSDK\vc15\lib\SDK\lib\opengl32.lib

OpenGL DLL:

C:\Windows\SysWOW64\opengl32.dll

opengl32.lib 库需要在 VS 项目 Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies 下指定。这同样适用于 Visual Studio 下的所有其他动态库。我不会再提了。

Cygwin:

OpenGL 静态库默认位置:

/lib/w32api/libopengl32.a

OpenGL 动态库(使用 Windows DLL):

C:\Windows\SysWOW64\opengl32.dll
  1. GLEW

Visual Studio:http://glew.sourceforge.net/ 下载 32 位/64 位二进制文​​件并安装在自定义文件夹中,例如 C:\OpenGL\glew-2.1.0。相同的下载适用于 Visual Studio 和 Cygwin。

GLEW 标头(到 #include GL/glew.h):

C:\OpenGL\glew-2.1.0\include

GLEW 静态库:

C:\OpenGL\glew-2.1.0\lib\Release\x64\glew32.lib

GLEW DLL:

C:\OpenGL\glew-2.1.0\bin\Release\x64\glew32.dll

这些可以在 VS 项目的属性菜单中指定。

Cygwin:您可以按原样从 Cygwin 链接到此库,这意味着您可以为 INCSLIBS 和 {{1} LDLIBS 中的 } 变量如下(与上面指定的下载目录一致):

GLEW 标头目录:

Makefile

GLEW 静态库目录:

/cygdrive/c/OpenGL/glew-2.1.0/include

GLEW 动态库目录:

/cygdrive/c/OpenGL/glew-2.1.0/lib/Release/x64

分别使用 /cygdrive/c/OpenGL/glew-2.1.0/bin/Release/x64 INCSLIBS 的这些值,然后您可以使用 UNIX 命名约定进行链接,如底部完整的 LDLIBS 所示的帖子。

  1. GLFW

这可以在 Makefile 下载。对于我们的 64 位设置,您需要 Windows 64 位预编译二进制文件。您也可以将它放在自定义文件夹中,例如 https://www.glfw.org/download。相同的下载适用于 VS 和 Cygwin。

Visual Studio: 您可以直接将下载位置指定到项目属性中,分别用于标头(源代码中的 C:\OpenGL\glfw-3.3.4.bin.WIN64)和 DLL(使 VS 链接到这些库)。

Cygwin: 对于 Cygwin,GLFW 更加棘手,因为您无法再直接从下载位置链接到它。您需要:

(a) 从下载位置复制标头、静态和动态库:

#include GLFW/glfw3.h

...进入您的工具链(MinGW)的相应位置:

GLFW 标头(创建 C:\OpenGL\glfw-3.3.4.bin.WIN64\include\GLFW\*.h C:\OpenGL\glfw-3.3.4.bin.WIN64\lib-mingw-w64\*.a C:\OpenGL\glfw-3.3.4.bin.WIN64\lib-mingw-w64\*.dll 目录):

include

GLFW 静态库:

/usr/x86_64-w64-mingw32/include/GLFW/*.h

GLFW 动态库:

/usr/x86_64-w64-mingw32/lib/*.a

(b) 将动态库位置放入您的 PATH 环境变量中,可在您的主目录中的 /usr/x86_64-w64-mingw32/bin/*.dll 文件中进行编辑。

Cygwin 的 .bash_profile 是:

Makefile

通过此设置,您可以在 VS 和 Cygwin 中使用完全相同的源代码文件。您可以使用以下命令从 Cygwin 中的目录编译、链接和运行 CC=/usr/bin/x86_64-w64-mingw32-c++.exe OPTS=-std=c++11 DEBUG=-g CFLAGS=-Wall -c ${DEBUG} INCS= -I.\ -I/cygdrive/c/OpenGL/glew-2.1.0/include\ -I/cygdrive/c/cygwin64/usr/x86_64-w64-mingw32 LIBS= -L/usr/lib\ -L/cygdrive/c/OpenGL/glew-2.1.0/lib/Release/x64\ -L/cygdrive/c/cygwin64/usr/x86_64-w64-mingw32/lib LDLIBS= -L/bin\ -L/cygdrive/c/OpenGL/glew-2.1.0/bin/Release/x64\ -L/cygdrive/c/cygwin64/usr/x86_64-w64-mingw32\bin Program.o: Program.cpp ${CC} ${OPTS} ${INCS} -c $< Program: Program.o ${CC} ${OPTS} ${LIBS} ${LDLIBS} Program.o -lopengl32 -lglew32 -lglew32.dll -lglfw3 -lgdi32 -luser32 -o Program

Program.exe

通过将现有的 $ make Program $ ./Program.exe 作为 SLN 项目打开并使用 IDE 界面运行它,您可以从 VS 运行 Cygwin 编译的程序。相反,您可以使用上述命令直接从 Cygwin 命令行运行 VS 可执行文件(由 VS 在 *.exeProject/Debug 中创建)。

包括:

Project/Release

无需在源代码中进行任何更改即可在黑白 VS 和 Cygwin 之间来回切换。快乐编码:-)