Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中用OpenGL绘制GL#u三角形+;_C++_Opengl_Rendering_Render_Freeglut - Fatal编程技术网

C++ 在C+中用OpenGL绘制GL#u三角形+;

C++ 在C+中用OpenGL绘制GL#u三角形+;,c++,opengl,rendering,render,freeglut,C++,Opengl,Rendering,Render,Freeglut,我正在尝试使用一个函数来使用OpenGL渲染三角形。 形状没有出现,我不知道为什么。我认为这可能只是因为顶点的位置 主要方法: int main() { glutInitWindowSize(400, 400); glutInitWindowPosition(200, 200); glutCreateWindow("Test"); Initialize(); glutDisplayFunc(Draw); glutMainLoop();

我正在尝试使用一个函数来使用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的工作原理。此外,您正在将浮点参数传递给drawTriangle函数,因此必须将int中的所有参数替换为float

是的,您的坐标远离屏幕。您应该熟悉GL坐标变换的工作原理以及
glOrtho()
的功能。非常感谢!我还在学习,所以从现在起我会知道的。