[英]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.