簡體   English   中英

在OpenGL的窗口上顯示兩個不同的圖像

[英]Displayin two different images on a window in OpenGL

我正在嘗試使用 OpenGL 在一個窗口上顯示兩個不同的圖像。 類似於下圖所示的內容。

窗口左側的第一張圖片:img [nc x nr]

窗口右側的第二張圖片:img2 [nc x ns]

在此處輸入圖片說明 圖片

我已經為顯示例程編寫了以下代碼:

void display(void)
{
   ///////////////////First Image////////////////////////
   glViewport( (GLsizei) 0, (GLsizei) 0, (GLsizei) nc, (GLsizei) nr );
   glClear(GL_COLOR_BUFFER_BIT);
   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);               

   glRasterPos2i(0, 0);                                 
   glDrawPixels(nc,nr, GL_RGB, GL_UNSIGNED_BYTE, img);

   ///////////////////Second Image////////////////////////
   glViewport( (GLsizei) 0, (GLsizei) nc, (GLsizei) nc, (GLsizei) ns );
   glClear(GL_COLOR_BUFFER_BIT);
   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);               

   glRasterPos2i(0, nc);                                    
   glDrawPixels(nc,ns, GL_RGB, GL_UNSIGNED_BYTE, img2); 
   //////////////////////////////////////////////////////

   glutSwapBuffers();                                   

}

當我運行程序時,窗口什么也不顯示; 但是當我注釋掉第二個圖像的顯示代碼時,我可以在窗口左側看到圖像 1。

誰能看到我的代碼有什么問題?

void display(void)
{
   // Size the viewport to be big enough for two images
   glViewport( (GLsizei) 0, (GLsizei) 0, (GLsizei) screen_width, (GLsizei) screen_height );
   glClear(GL_COLOR_BUFFER_BIT);
   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);               

   // Position first image starting at 0, 0
   glRasterPos2i(0, 0);   
   // Get the width and height of image as first two params                              
   glDrawPixels(img.width,img.height, GL_RGB, GL_UNSIGNED_BYTE, img);

   // Position second image starting after the width of the first image
   glRasterPos2i(img.width, 0);   
   // get width and height of second image as first two params                                 
   glDrawPixels(img2.width,img2.height, GL_RGB, GL_UNSIGNED_BYTE, img2); 

   glutSwapBuffers();

}

這是一般的想法。 顯然 screen_height 等在您的應用程序中的命名不同,但視口應設置為屏幕的大小。 Raster 位置應該是圖像的起始位置,DrawPixels 的前 2 個參數應該是圖像的寬度和高度。 每個圖像不需要自己的視口,因為當圖像/模型的數量增加時,這將非常難以管理(並且非常慢)。

實際上,您正在定義視口兩次。 所以第一個視口的效果不再有效。 僅定義一個具有屏幕高度和寬度的視口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM