Я пытаюсь создать игрока в OpenGL. Я использую ffmpeg для декодирования видео.ffmpeg to opengl texture with glTexImage2D
Я искал несколько руководств (StackOverflow, ....), как преобразовать текстуру pFrameRGB-> данных [0] в OpenGL, но он все еще показывает мне белый квадрат. Я преобразовал свое видео в 512x256, чтобы соответствовать 2^n.
Я знаю, что мой pFrameRGB правильный, потому что я могу создать frameX.ppm с функцией SaveFrame (...).
Я использовал следующий код (https://github.com/arashafiei/dranger-ffmpeg-tuto/blob/master/tutorial02.c) как модель, адаптировав для своего плеера.
И это мой исходный код:
http://www.sourcepod.com/uagkel22-19078
ли один из вас есть решение моей проблемы?
Edit 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