簡體   English   中英

鏈接計算着色器

[英]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的擴展,因此您實際上可以先加載glXCreateContextAttribsARBglDispatchComputeglBindImageTexture你有一個背景。 但是,您獲得的后兩個函數指針在運行時是否會做任何事情是另一回事,並且取決於您創建的上下文的功能。

未定義的引用意味着您沒有鏈接到庫

您忘記了鏈接。 如果使用的是GLEW,請確保鏈接到glew32.lib(或libglew32.a或適用於您系統的任何文件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM