【问题标题】:Only black window drawing Triangle, using openGL and GLUT with Xcode on MacOS仅黑色窗口绘制三角形,在 MacOS 上使用 openGL 和 GLUT 与 Xcode
【发布时间】:2018-08-21 21:34:36
【问题描述】:

我的窗口上什么都没有显示,只有黑色纯色,构建继续进行,但没有其他任何事情发生..

我也在 Windows 上尝试了相同的代码,但仍然没有。

这是我的代码:

#define _USE_MATH_DEFINES
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vector>

#if defined(__APPLE__)
#include <GLUT/GLUT.h>
#include <OpenGL/gl3.h>
#include <OpenGL/glu.h>
#else
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
#include <windows.h>
#endif
#include <GL/glew.h>        // must be downloaded
#include <GL/freeglut.h>    // must be downloaded unless you have an Apple
#endif

using namespace std;

void changeViewPort(int w, int h)
{
    glViewport(0, 0, w, h);
}

void render()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    glVertex2f(0.5, 0.5);
    glVertex2f(-0.5, -0.5);
    glVertex2f(1.5, 1.5);
    glEnd();
    glutSwapBuffers();
}

int main(int argc, char* argv[]) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowSize(800, 600);
    glutCreateWindow("Hello, GL");
    glutReshapeFunc(changeViewPort);
    glutDisplayFunc(render);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0,400,0,500);
    glutMainLoop();
    return 0;
}

【问题讨论】:

    标签: c++ xcode macos opengl glut


    【解决方案1】:

    这是一个面积为零的三角形,所有顶点都在一条线上。您可以使用GL_LINE_LOOP 而不是GL_TRIANGLES 或使用glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) 进行仔细检查。

    零面积三角形在光栅化过程中通常不会生成任何片段。没有碎片,没有绘制。

    修复:

    大家一起:

    #include <GL/glut.h>
    
    void render()
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glBegin(GL_TRIANGLES);
        glVertex2f( -0.5, -0.5 );
        glVertex2f(  0.5, -0.5 );
        glVertex2f(  0.0,  0.5 );
        glEnd();
        glutSwapBuffers();
    }
    
    int main(int argc, char* argv[])
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
        glutInitWindowSize(800, 600);
        glutCreateWindow("Hello, GL");
        glutDisplayFunc(render);
        glutMainLoop();
        return 0;
    }
    

    【讨论】:

    • 哦,哇,你帮了很多忙,我没想到问题是数学问题而不是语法问题。现在它向我展示了想要的白色三角形!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多