簡體   English   中英

在C ++中使用OpenGL渲染GL_TRIANGLES

[英]Rendering GL_TRIANGLES with OpenGL in C++

我正在嘗試使用函數使用OpenGL渲染三角形。 形狀沒有出現,我也不知道為什么。 我認為可能只是因為頂點的位置。

主要方法:

 int main() {


    glutInitWindowSize(400, 400);
    glutInitWindowPosition(200, 200);
    glutCreateWindow("Test");
    Initialize();
    glutDisplayFunc(Draw);
    glutMainLoop();
    return 0;
}

初始化方法:

 void Initialize() {
    glClearColor(0.1, 0.1, 0.1, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

drawTriangle函數:

 void drawTriangle(int v1x, int v1y, int v2x, int v2y, int v3x, int v3y, int red, int green, int blue)
{
    //arguments are: "vertex 1 x coordinate", "vertex 1 y coordinate" etc
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 1.0, 1.0);

    glBegin(GL_TRIANGLES);
        glVertex2f(v1x, v1y); // v1
        glVertex2f(v2x, v2y); // v2
        glVertex2f(v3x, v3y); // v3
    glEnd();

    glFlush();
}

繪制方法:

void Draw() {
    drawTriangle(3.0, 2.9, 300, 300, 100, 100, 10, 0, 0);
}

您的坐標不適合定義的正交塊內

replace : glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 
with this:     glOrtho(0.0, 400.0, 0.0, 400.0, -1.0, 1.0);

上面是一個臨時修復程序,它將幫助您了解glOrtho的工作方式。 另外,您要將float參數傳遞給drawTriangle函數,因此必須將所有參數從int替換為float

暫無
暫無

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

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