[英]Draw a triangle with OpenGL
編寫一個C ++程序,它將繪制一個頂點為(300,210),(340,215)和(320,250)的三角形。 三角形的中心位於(320,240)。
#include <GL/glut.h>
#include <stdlib.h>
void display(void)
{
glClearColor(1,1,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(0.5,0,0);
glVertex2f(300.0,210.0);
glVertex2f(340.0,215.0);
glVertex2f(320.0,250.0);
glEnd();
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(640,500);
glutInitWindowPosition(1,1);
glutCreateWindow("Triangle");
glutDisplayFunc(display);
glutMainLoop();
return EXIT_SUCCESS;
}
問題三角形不會出現只顯示黃色屏幕。
OpenGL中的坐標系是-1 - > 1.您必須從您想要的像素值轉換坐標。
這可以通過一些線性插值來完成。 這樣的事情應該有效:
float c = -1.0 + 2.0*desiredPixel/pixelWidth
您需要為所有三角坐標執行此轉換。
您的程序需要適當的視圖/投影矩陣。 glOrtho(0, 640, 480, 0, -1, 1)
應該可以解決問題。 理想情況下它應該被稱為與MatrixMode
設置為GL_PROJECTION
。
下面是一個簡單有效的三角形代碼:
glBegin(GL_TRIANGLES);
glColor3f(0.1, 0.2, 0.3);
glVertex3f(0, 0, 0);
glVertex3f(1, 0, 0);
glVertex3f(0, 1, 0);
glEnd();
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,400,0,500);
這解決了我的問題,大多數3D視角在我認為不起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.