[英]Linking compute shader
我嘗試編譯這個小例子 ,執行make時遇到此錯誤:
g++ -o ogl_cs_example main.cpp opengl_cs.cpp opengl_util.cpp -Wall -Iinclude -lX11 -lGL -lGLU
/tmp/ccFLIOt2.o: In function `updateTex(int)':
main.cpp:(.text+0xc6): undefined reference to `glDispatchCompute'
/tmp/ccQ8pShN.o: In function `genTexture()':
opengl_util.cpp:(.text+0x3df): undefined reference to `glBindImageTexture'
/tmp/ccQ8pShN.o: In function `initGL()':
opengl_util.cpp:(.text+0x7dd): undefined reference to `glXCreateContextAttribsARB'
collect2: error: ld returned 1 exit status
make: *** [example] Error 1
我想念什么?
這些功能都是平台的最小實現未提供的所有OpenGL / GLX擴展。
您必須在運行時使用glXGetProcAddress (...)
加載它們,它們不包含在您直接鏈接到的任何庫中。 盡管您可以鏈接到諸如GLEW之類的擴展管理庫來為您完成繁瑣的工作,但是您仍然要做的不只是添加新的鏈接依賴項。
創建OpenGL渲染上下文后,通常必須初始化所述庫。 值得指出的是,使WGL(Windows)和GLX(X11)脫穎而出的一件事是,您無需先創建GL上下文即可加載GLX的擴展,因此您實際上可以先加載glXCreateContextAttribsARB
, glDispatchCompute
和glBindImageTexture
你有一個背景。 但是,您獲得的后兩個函數指針在運行時是否會做任何事情是另一回事,並且取決於您創建的上下文的功能。
未定義的引用意味着您沒有鏈接到庫
您忘記了鏈接。 如果使用的是GLEW,請確保鏈接到glew32.lib(或libglew32.a或適用於您系統的任何文件)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.