2011-04-19 71 views
2

編譯器是mingw32。語言是C99。操作系統是Windows。顯卡是Nvidia 260GTX在Windows上獲取OpenGL設置(mingw32?)

我可以鏈接到opengl32/glu32並構建它,但沒有包含OpenGL 3.x ...其實,我會說它可能缺少2.x擴展!

GLEW和GLM都是C++,並且不能直接使用C. Glee沒有任何mingw32二進制文件(並且不會在我的系統上進行乾淨地構建)。

我正在使用SDL,它具有一些OpenGL函數(??),但是看起來過時了。

我只是我不明白爲什麼很難獲得C/OpenGL在Windows上工作的根本問題?爲什麼這麼獨特?爲什麼Khronos不提供SDK /庫/頭文件等?

我通過Java/lwjgl做OpenGL,並且沒有時間去設置它,並讓它編譯/運行。

+2

是什麼讓你認爲GLEW不適用於C?它應該工作得很好。你試過了嗎?你有沒有得到任何錯誤? – Bart 2011-04-19 08:18:05

+0

謝謝,但是當我嘗試與GLEX鏈接並且啓用了-std = c99 -ansi時,我收到了一堆編譯器/鏈接錯誤。也沒有mingw32構建;只有MSVC。 – user697111 2011-04-19 19:02:43

+0

GLEW和GLEE都有mingw32軟件包。不要在ANSI C99中乾淨地編譯。 – user697111 2011-04-19 22:46:37

回答

2

在Windows中,只有通過擴展才能訪問OpenGL-1.1以上的任何內容。這是如何設計的以及如何設計的。 GLEW與純C完美兼容(如果我沒有把GLEW寫成純C語言)。

Khronos無法提供SDK,因爲實際上提供OpenGL API是一項留給操作系統供應商的任務,在Windows中需要圖形驅動程序來提供實施。在Windows的情況下,這是幾年前離開ARB的微軟,他們贊成他們專有的Direct3D技術;過去曾經有過激烈的辯論,這是更好的API,但現在整個世界,除了微軟決定在OpenGL這一次的爭論結束之後。無論如何,如果你想讓事情變得非常簡單,而不是GLUT,SDL等使用GLFW http://glfw.org,這是一個非常出色的OpenGL框架,它爲你做了所有困難的事情,擴展加載和OpenGL-3上下文如果你這樣問(如果你這樣問),你仍然需要一些擴展包裝來在自己的代碼中使用擴展 - 但是創建一個純OpenGL-3上下文需要一些代理上下文,使用它來加載一些擴展,並使用獲得的函數來創建一個真正的OpenGL -3上下文,只是爲了澄清)。

+0

來自GLFW:2.13爲什麼你的gl.h沒有我需要的功能? GLFW不提供gl.h或glu.h的任何版本。 glfw.h頭文件包含您的開發環境中已經存在的版本。 但是,如果您使用的是Windows,那麼在不使用擴展名的情況下,您將無法獲得比OpenGL 1.2更新的任何內容。由於GLFW的擴展管理非常簡單,我們建議您使用專用的擴展加載庫,例如GLEW或GLee。 – user697111 2011-04-19 22:42:22

+0

爲什麼GLFW通過SDL?他們自己的網站表示,他們不支持Windows上1.1以上的GL擴展。 – user697111 2011-04-19 22:42:44

+0

GLEW或GLEE都沒有MinGW32構建,也沒有在ANSI C99中乾淨地編譯。 – user697111 2011-04-19 22:43:26