我想在OpenGL中製作一個播放器。我使用ffmpeg來解碼視頻。ffmpeg與glTexImage2D的opengl紋理
我搜索了幾個教程(StackOverflow,....)如何在OpenGL中轉換我的pFrameRGB-> data [0]紋理,但它仍然顯示我一個白色方塊。我將視頻轉換爲512x256以符合2^n。
我知道我的pFrameRGB是正確的,因爲我可以使用「SaveFrame(...)」函數創建frameX.ppm。
我使用以下源代碼(https://github.com/arashafiei/dranger-ffmpeg-tuto/blob/master/tutorial02.c)作爲適合我的播放器的模型。
這是我的源代碼:
http://www.sourcepod.com/uagkel22-19078
難道你一個有一個解決我的問題?
編輯1:
我刪除:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 1 ? GL_REPEAT : GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 1 ? GL_REPEAT : GL_CLAMP);
代替:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pCodecCtx->width, pCodecCtx->height, 0, GL_RGB, GL_UNSIGNED_BYTE, pFrameRGB->data[0]);
由:
if(firstRendering){
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pCodecCtx->width, pCodecCtx->height, 0, GL_RGB, GL_UNSIGNED_BYTE, pFrameRGB->data[0]);
firstRendering = 0;
}else{
glActiveTexture(texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, pCodecCtx->width, pCodecCtx->height, GL_RGB, GL_UNSIGNED_BYTE, pFrameRGB->data[0]);
}
,我嘗試運行但stiil什麼......
你是否在任何地方調用'glEnable(GL_TEXTURE_2D)'?我沒有在你的代碼中看到它。 – GuyRT