[英]glBindTexture Problem with OpenGL ES on iPhone
我是OpenGL的新手,我的紋理有一個奇怪的問題-尋找正確方向的微調。
我有一個使用Render to Texture技術來實現某種效果的應用程序-它的工作非常出色。 每次需要時,我都會繪制到屏幕外緩沖區,並且能夠將其用作渲染循環中的紋理。
僅在必要時才更新此紋理-與大多數幀一樣,它會被繪制到屏幕上。
我有一些工具欄,這些工具欄也使用OpenGL繪制,在該表面的頂部使用紋理圖集並使用混合繪制。
我最近開始嘗試將粒子系統合並到應用程序中,但是每當我嘗試渲染粒子系統圖形時,我都會“丟失”第一步中渲染的紋理,即其內容消失了。
我將其追溯到對綁定粒子紋理的glBindTexture的調用。
編輯:我可以在下面的簡單工具欄繪制例程中重現此代碼。 這是一個粗略的例程,可在屏幕上和屏幕外對工具欄圖形進行動畫處理。
當取消注釋drawToolBar()的前兩行時,我在內存中渲染的紋理消失了,即,我的render循環中的drawarrays調用不向屏幕渲染任何內容。 通過測試,我確定了觸發glBidTexture的原因。 (例如,我可以在紋理上渲染彩色四邊形,而不能渲染紋理四邊形)
但是,如果我允許drawToolbar()如下運行,一切都很好-唯一的區別是對drawTools()的最終調用包裝在glPush / Pop中並進行了翻譯。
請注意,工具欄渲染始終有效-這里發生了一些意外的副作用,后果或錯誤問題,這導致我的背景紋理消失了。
歡迎任何想法-這真讓我發瘋。
編碼:
void drawTools()
{
//*Texture Coordinate Stuff Snipped*//
glBindTexture(GL_TEXTURE_2D, _buttontexture);
glEnable(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer (2, GL_FLOAT, 0,bottomToolQuads);
glTexCoordPointer(2, GL_FLOAT, 0,texc);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 12, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 16, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 20, 4);
glDisable(GL_TEXTURE_2D);
}
void drawToolBar()
{
//drawTools();
//return;
if(_toolbarState ==0)
{
drawTools();
}
else if(_toolbarState == 2)//hiding
{
_toolbarVisiblePct -= TOOLINC;
if(_toolbarVisiblePct <= 0.0)
{
_toolbarState = 1;
_toolbarVisiblePct = 0.0;
}
else
{
glPushMatrix();
glTranslatef(0.0, -(1-_toolbarVisiblePct) * 50, 0);
drawTools();
glPopMatrix();
}
}
else if(_toolbarState == 3) //showing
{
_toolbarVisiblePct += TOOLINC;
if(_toolbarVisiblePct >= 1.0)
{
_toolbarState = 0;
_toolbarVisiblePct = 1.0;
drawTools();
}
else
{
glPushMatrix();
glTranslatef(0.0, -(1-_toolbarVisiblePct) * 50, 0);
drawTools();
glPopMatrix();
}
}
}
好像您在drawTools方法的結尾禁用了紋理渲染。 OpenGL是狀態機,如果禁用狀態,它將保持禁用狀態,直到再次啟用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.