當glDrawPixels()與glRasterPos2 *()和glPixelZoom()組合使用時,我得到了非常奇怪的結果。我有一張照片,我想展示它,就像過去使用的舊幀緩衝器,即(0,0)處於頂部的角落。下面的代碼:當使用glDrawPixels時顛倒圖片
void GLWidget::resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, 0, h, -1, 1);
}
void GLWidget::paintGL()
{
for(int i = 0; i < SCREEN_WIDTH; ++i)
{
displayBitmap[i] = 0xf81f;
}
for(int i = 239 * SCREEN_WIDTH; i < 239 * SCREEN_WIDTH + SCREEN_WIDTH; ++i)
{
displayBitmap[i] = 0xf800;
}
//glRasterPos2f(0, SCREEN_HEIGHT - 0.1);
glRasterPos2i(0, SCREEN_HEIGHT - 1);
glPixelZoom(1, -1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glDrawPixels(SCREEN_WIDTH, SCREEN_HEIGHT, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, displayBitmap);
}
如果執行,因爲它是現在,我得到的紫線(0,1),即一個黑線,那麼紫線,然後,在看不見的底部區域,是紅線。
OK,所以我改變
glRasterPos2i(0, SCREEN_HEIGHT - 1);
到
glRasterPos2i(0, SCREEN_HEIGHT);
不,輸出已損壞。奇怪的是,如果我將其更改爲:
glRasterPos2f(0, SCREEN_HEIGHT - 0.1);
它的作品,無論是畫線,以正確的順序(SCREEN_HEIGHT和SCREEN_HEIGHT - 1.0導致同樣的結果作爲整數版本)。
我在做什麼錯在這裏? SCREEN_WIDTH = 320,SCREEN_HEIGHT = 240.
我不知道。你能否給我一個例子說明如何以你描述的方式來做到這一點?我在OpenGL方面經驗不足 – 2013-04-08 12:13:22