2013-07-30 44 views
0

在init階段中使用的函數(從舊庫中)有一個簡單的代碼 - 例如在一個Texture Loader模塊中。表現wglGetProcAddress,應該調用緩存?

loadTexture() { 
    // ... 
    gl_func = wglGetProcAddress(...) 
    // ... 
    gl_func() 
} 

我應該擔心撥打wglGetProcAddress的費用嗎?或者,它可能非常快,不需要緩存機制?或者,也許WGL緩存這樣的過程調用?

GLX和Apple的其他類似功能呢?我應該擔心或不關心他們嗎?

+1

爲什麼你永遠*寫的代碼? –

+0

@NicolBolas我沒有寫它......但我發現一些遺留代碼與OpenGL的'現代'部分。我正在考慮在沒有大量重構的情況下改進它。 – fen

+0

GLee是否處於「自動」模式? – Damon

回答

2

wglGetProcAddress至少會做一些字符串比較,所以它不是免費的。最大的問題是,如果每次使用gl函數時插入wglGetProcAddress,代碼都會變得難看。

如果您使用將所有醜陋的wglGetProcAddress置於單獨文件中的生成器,那麼這是最好的。例如使用gluxglloadgen

+0

一般來說,你建議爲這個遺留庫添加一些「init」方法,並在「init」加載所需的擴展?我想不包括任何其他第三方庫(如glew或glee ...) – fen

+0

@fen你可以避免使用glloadgen的第三方庫。這是一個將自動寫入init函數的腳本 –