我有一个将RGB视频帧渲染到窗口的功能。这为拍摄尺寸(640×480),如果窗口是相同的尺寸,但是当我调整窗口大小的渲染是不正确的正常工作:将OpenGL纹理拉伸到窗口尺寸
img http://img855.imageshack.us/img855/1694/screenshot20120404at536.png
编辑:现在的工作职能。
static inline void draw_rgb(
unsigned char * buf, unsigned x, unsigned y, unsigned window_width,
unsigned window_height, unsigned frame_width, unsigned frame_height
)
{
glEnable(GL_TEXTURE_RECTANGLE_EXT);
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1);
glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, window_width * window_height * 2, buf);
glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, frame_width, frame_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buf);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glViewport(x, y, window_width, window_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho((GLfloat)0, (GLfloat)window_width, (GLfloat)0, (GLfloat)window_height, -1.0, 1.0);
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glBegin(GL_QUADS);
{
glTexCoord2f(0.0f, 0.0f);
glVertex2f(0.0f, window_height);
glTexCoord2f(0.0f, frame_height);
glVertex2f(0.0f, 0.0f);
glTexCoord2f(frame_width, frame_height);
glVertex2f(window_width, 0.0f);
glTexCoord2f(frame_width, 0.0f);
glVertex2f(window_width, window_height);
}
glEnd();
}
什么是'不正确'? – Tim 2012-04-04 21:46:26
为什么在'ARB_texture_non_power_of_two'上选择'EXT_texture_rectangle' /'ARB_texture_rectangle'?如这里所示 – genpfault 2012-04-04 21:52:32
的图像变得失真:[链接](http://img855.imageshack.us/img855/1694/screenshot20120404at536.png) – junglecat 2012-04-04 21:53:38