2012-05-09 28 views
0

在所有示例中,總是在調用glTexImage2D之前設置GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAG_FILTER。這有什麼理由嗎?GL_TEXTURE_MIN_FILTER和glTexImage2D的理想順序

我知道在紋理可用之前必須設置它們(或者您必須製作mipmap),但在glTexImage2D之後設置它們有什麼問題嗎?

例子:

GL11.glTexParameteri(target, GL11.GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
GL11.glTexParameteri(target, GL11.GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
GL11.glTexImage2D(target, 0, GL_RGBA8, t_width, t_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureBuffer); 

VS

GL11.glTexImage2D(target, 0, GL_RGBA8, t_width, t_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureBuffer); 
GL11.glTexParameteri(target, GL11.GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
GL11.glTexParameteri(target, GL11.GL_TEXTURE_MAG_FILTER, GL_NEAREST); 

回答

2

不,不應該有任何區別。這些應該只在紋理採樣時產生任何效果,這會晚得多。

+0

這是OpenGL規範如何定義它,過去有bug的實現,只有在調用glTexImage之前設置它們纔會尊重紋理參數(特別是過濾)。這可能是你仍然可以在教程中看到這種模式的主要原因。在現代OpenGL中,我們獲得了取樣器對象,這使我們擺脫了這些問題。 – datenwolf

+0

@datenwolf不知道,謝謝你的糾正。 – Tim