我正在實現渲染器,其中陰影需要從前到後的渲染。我在解決如何初始化混合函數時遇到問題。Opengl前後混合問題(黑屏)
這是我的嘗試。
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
這會導致黑屏。
The blog post說要使用GL_ONE_MINUS_DST_ALPHA,GL_ONE並初始化背景爲全黑的所有半透明,這是我認爲我在做的事情。該帖子引用an nvidia whitepaper,所以我也研究了這一點。我查看了那裏的代碼,他們似乎和我一樣。然而有些東西顯然是錯誤的,因爲它不起作用。如果我不使用混合或使用其他混合功能,事情似乎可行。
編輯:
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutCreateWindow("Window");
你是否要求你的幀緩衝器有一個alpha組件,並檢查你是否真的得到了它? –
嘿,我沒有做任何更多的初始化比我放在那裏的代碼。我只是直接渲染到默認幀緩衝區 – Jens
您使用什麼框架/工具箱來設置您的上下文和窗口?默認幀緩衝區的格式是在初始設置過程中指定的。細節高度依賴平臺/工具包/框架。 –