gpt4 book ai didi

c++ - 在 Opengl 中画一条线不显示 C++

转载 作者:行者123 更新时间:2023-11-30 03:13:32 25 4
gpt4 key购买 nike

我正在尝试在我的窗口上画一条直线 屏幕颜色正常,但这条线似乎没有画出来。我很确定这是因为我可能设置了错误的位置并且线被从窗口剪掉了,但我不确定如何解决这个问题。

我的完整代码

#include <GL\glew.h>
#include <GLFW/glfw3.h>
#include <GL\glut.h>
#include <glm.hpp>
#include <GL\freeglut.h>
#include <GL\GL.h>
#include <IL/il.h>

using namespace std;

int main() {
int windowWidth = 1024, windowHeight = 1024;
if (!glfwInit())
return -1;


GLFWwindow* window;
window = glfwCreateWindow(windowWidth, windowHeight, "electroCraft", NULL, NULL);
glfwMakeContextCurrent(window); // stes the specified window as active INACTIVE SCREEN IF WINDOW NOT CURRENT!!!!
if (!window) {
glfwTerminate();
printf("Screen failed to start. ABORTING...\n");
return -1;
}
glViewport(0, 0, windowWidth, windowHeight);
glOrtho(0, windowWidth, 0, windowHeight, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
while (!glfwWindowShouldClose(window)) {
glClearColor(62.0f / 255.0f, 85.9f / 255.0f, 255.0 / 255.0, 0.0);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);

//begin drawing
glBegin(GL_LINE);
glVertex2f(20, 100);
glVertex2f(600, 100);
glEnd();

glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}

最佳答案

如评论中所述,您必须使用 GL_LINES 而不是 GL_LINE,因为 GL_LINE 不是有效的 Primitive类型。

glBegin(GL_LINES); // <----
glVertex2f(20, 100);
glVertex2f(600, 100);
glEnd();

但是还有一个问题。默认矩阵模式为 GL_MODELVIEW(参见 glMatrixMode),因此正交投影设置为模型 View 矩阵并被单位矩阵 (glLoadIdentity) 覆盖。您必须在 glOrtho 之前设置矩阵模式 GL_PROJECTION:

glMatrixMode(GL_PROJECTION); // <----
glOrtho(0, windowWidth, 0, windowHeight, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

关于c++ - 在 Opengl 中画一条线不显示 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com