我想用bindless紋理和多級採樣。但奇怪的事情發生。glGetTextureHandleARB隨後GL_TEXTURE_2D_MULTISAMPLE錯誤
我的質地應該是bindless:
glBindTexture(GL_TEXTURE_2D, texResolve);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
GLuint64 texResolveHandle = glGetTextureHandleARB(texResolve);
GL_CHECK_ERROR("after glGetTextureHandleARB");
//glMakeTextureHandleResidentARB(texResolveHandle);
//glMakeTextureHandleNonResidentARB(texResolveHandle);
GL_CHECK_ERROR("after glMakeTextureHandleResidentARB");
//所有好爲止!
現在我創造學習我的多重採樣紋理,事情越來越奇怪:
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, texMSAA);
GL_CHECK_ERROR("after glTexImage2DMultisample 1"); //still ok
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
GL_CHECK_ERROR("after glTexImage2DMultisample 2"); //ERROR
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
GL_CHECK_ERROR("after glTexImage2DMultisample 3"); //ERROR
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGBA8, width, height, false);
GL_CHECK_ERROR("after glTexImage2DMultisample texMSAA"); //Again OK ????
所以,我的問題:這是怎麼回事?
問候
你不是在多重採樣紋理設置紋理參數,因爲你使用'GL_TEXTURE_2D'作爲第一個參數'glTexParameteri()'。話雖這麼說,設置在多樣本取樣器紋理參數將是一個錯誤,無論如何,它們不被支持。 –
沒有什麼奇怪的努力線性濾波適用於多次採樣質地和得到一個錯誤。奇怪的是試圖過濾多重採樣的紋理。這些紋理的採樣方式與常規紋理不同,紋理過濾和包裝模式沒有意義。 –
我明白了。說得通。但是,爲什麼只有當我創建紋理句柄時纔會失敗? – user3497417