簡體   English   中英

用OpenGL繪制一個三角形

[英]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.

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