2013-03-22 43 views
0

我可以成功地渲染程序對象。鏈接程序對象再次

但有時我在運行的應用程序,當我修改和編譯glLinkProgram()其頂點&片段着色源,再重新連接它,我看到程序無法呈現。

需要注意的是:着色器和程序進行了重新編譯/成功重新鏈接。

我只是

glGetShaderiv(fsId, GL_COMPILE_STATUS, &compileStatus); 
and glGetProgramiv(progId, GL_LINK_STATUS, &linkStatus); 
the result is compileStatus = linkStatus = 1 

檢查它們的狀態我不知道我們可以重新連接在OpenGL ES 2.0的或不是一個程序對象?

我的GPU信息:

GL_RENDERER: PowerVR SGX 530 
GL_VENDOR: Imagination Technologies 
GL_VERSION: OpenGL ES 2.0 

回答

1

你能嗎?按照OpenGL ES規範,是的。 應該你?編號

在OpenGL甚至ES版本中做任何事情時的一般規則是這樣的:不要做任何事情除非你知道它通常是完成的。越遠離你走的路,越有可能遇到驅動程序錯誤。

在一般情況下,程序的使用模式是將它們連接,然後用它們了一堆,然後刪除它們,當你關閉應用程序。你應該堅持。如果你需要一個新的程序,你可以創建一個新程序

重聯是不管怎樣都是回收站中的所有制服的狀態。所以它不像你通過重新鏈接舊程序而不是創建新程序來保存某些東西。事實上,這樣更好。如果新鏈接失敗,您仍然擁有舊程序。而如果您重新鏈接程序並且失敗,則舊數據爲銷燬