C++ 只有黑色窗口绘制三角形,在MacOS上使用openGL和GLUT以及Xcode
我的窗口上没有显示任何东西,只有黑色纯色,构建继续进行,但没有其他事情发生 我也在Windows上尝试了同样的代码,但仍然没有 这是我的密码:C++ 只有黑色窗口绘制三角形,在MacOS上使用openGL和GLUT以及Xcode,c++,xcode,macos,opengl,glut,C++,Xcode,Macos,Opengl,Glut,我的窗口上没有显示任何东西,只有黑色纯色,构建继续进行,但没有其他事情发生 我也在Windows上尝试了同样的代码,但仍然没有 这是我的密码: #define _USE_MATH_DEFINES #include <stdio.h> #include <stdlib.h> #include <math.h> #include <vector> #if defined(__APPLE__) #include <GLUT/GLUT.h>
#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;
}
定义使用数学定义
#包括
#包括
#包括
#包括
#如果已定义(\uuuu苹果\uuuuu)
#包括
#包括
#包括
#否则
#如果已定义(WIN32)| |已定义(_WIN32)| |已定义(uu WIN32_uu)
#包括
#恩迪夫
#必须下载include//
#除非您有苹果,否则必须下载include//
#恩迪夫
使用名称空间std;
无效更改视口(int w,int h)
{
glViewport(0,0,w,h);
}
void render()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glBegin(GL_三角形);
glVertex2f(0.5,0.5);
glVertex2f(-0.5,-0.5);
glVertex2f(1.5,1.5);
格伦德();
glutSwapBuffers();
}
int main(int argc,char*argv[]){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_双精度| GLUT_RGBA | GLUT_深度);
glutInitWindowSize(800600);
glutCreateWindow(“你好,德国劳埃德船级社”);
GLUTEFUNC(更改视口);
glutDisplayFunc(渲染);
glMatrixMode(GL_投影);
gluOrtho2D(0400,0500);
glutMainLoop();
返回0;
}
这是一个零面积三角形,所有顶点都在一条线上。您可以使用GL\u LINE\u LOOP
而不是GL\u三角形
或使用glPolygonMode(GL\u FRONT\u和GL\u BACK,GL\u LINE)
进行双重检查
零面积三角形在光栅化过程中通常不会生成任何碎片。没有碎片,没有画
修正:
- 将非零面积三角形传递给OpenGL
- 摆脱
&glMatrixMode()
调用,那么小的几何体不需要它们gluOrtho2D()
- 不需要只调用
;;的重塑回调李>glViewport()
#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;
}
#包括
void render()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glBegin(GL_三角形);
glVertex2f(-0.5,-0.5);
glVertex2f(0.5,-0.5);
glVertex2f(0.0,0.5);
格伦德();
glutSwapBuffers();
}
int main(int argc,char*argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_双精度| GLUT_RGBA | GLUT_深度);
glutInitWindowSize(800600);
glutCreateWindow(“你好,德国劳埃德船级社”);
glutDisplayFunc(渲染);
glutMainLoop();
返回0;
}
噢,哇,你帮了大忙,我没想到这个问题是数学问题,而不是语法问题。。现在它向我展示了白色的通缉三角!谢谢