簡體   English   中英

紋理不隨OpenGL一起旋轉(C)

[英]Texture do not rotate with OpenGL (C)

我試圖旋轉從視頻幀(由ffmpeg提供)提取的紋理,我嘗試了以下代碼:

glTexSubImage2D(GL_TEXTURE_2D,
            0,
            0,
            0,
            textureWidth,
            textureHeight,
            GL_RGBA,
            GL_UNSIGNED_BYTE,
            //s_pixels);
        pFrameConverted->data[0]);

glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(0.5,0.5,0.0);
glRotatef(90,0.0,0.0,1.0);
glTranslatef(-0.5,-0.5,0.0);
glMatrixMode(GL_MODELVIEW);

//glDrawTexiOES(-dPaddingX, -dPaddingY, 0, drawWidth + 2 * dPaddingX, drawHeight + 2 * dPaddingY);
glDrawTexiOES(0, 0, 0, drawWidth, drawHeight);

圖像未旋轉,您看到問題了嗎?

GL_OES_draw_texture擴展規范中:

另請注意,作為DrawTex渲染的一部分,為每個片段計算s,t,r和q。 這意味着紋理矩陣將被忽略,並且對渲染結果沒有影響。

您正在嘗試使用固定功能紋理矩陣變換紋理坐標,但是像點精靈一樣,這些坐標是按片段而不是按頂點生成的。 因此,這意味着對紋理矩陣所做的任何操作都不會影響glDrawTexiOES (...)的輸出。

考慮使用紋理四邊形,它們將通過傳統的頂點處理管道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM