所以我试着画两个三角形,但最后我得到的是没有任何三角形的白色窗口。我已经正确地设置了库,但我相信代码中可能有错误,因为我是一个新手,所以我无法理解它。代码不符合任何错误或警告,但结果不是我所期望的窗口是白色的,并且窗口中没有显示任何图形。
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include <cstdlib>
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600
int main(void)
{
GLFWwindow* window;
// initialize the library
if (!glfwInit())
{
return -1;
}
// Create a window and its context
window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "kk", NULL, NULL);
int screenWidth, screenHeight;
glfwGetFramebufferSize(window, &screenWidth, &screenHeight);
if (!window)
{
glfwTerminate();
return -1;
}
// make the window's context current
glfwMakeContextCurrent(window);
glViewport(0, 0, screenWidth, screenHeight); //specifies part of the window OpenGL can draw on
glMatrixMode(GL_PROJECTION); //controls the camera
glLoadIdentity(); //put us at (0, 0, 0)
glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 0, 600); //cordinate system
glMatrixMode(GL_MODELVIEW); //defines how objects are trasformed
glLoadIdentity(); //put us at (0, 0, 0)
GLfloat first_triangle[] = {
0, 0, 0,
0,300,0,
200,300,0,
};
GLfloat second_triangle[] = {
200,300,0,
400,300,0,
400,600,0,
};
GLfloat color[] =
{
255,0,0,
0,255,0,
0,0,255
};
// Loop until the window is closed by the user
while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
//OpenGL rendering
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, first_triangle); // points to the vertices to be used
glColorPointer(3, GL_FLOAT, 0, color); // color to be used
glDrawArrays(GL_TRIANGLES, 0, 3); // draw the vetices
glVertexPointer(3, GL_FLOAT, 0, second_triangle); // points to the vertices to be used
glColorPointer(3, GL_FLOAT, 0, color); // color to be used
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
};
}
您必须在应用程序循环结束时调用glfwSwapBuffers
和glfwPollEvents
:
while (!glfwWindowShouldClose(window))
{
// [...]
glfwSwapBuffers(window);
glfwPollEvents();
}
我正在使用Linux并试图学习OpenGL。我参考了learnopengl.com网站,并在这里编译了第一个可用的程序。 我似乎在编译程序时没有遇到命令问题 但是当我运行程序时,它会从后面显示东西,而不是像这样的空白窗口 但是请注意,此窗口不透明,因为如果我移动窗口,背景是相同的。但是,如果我最小化并重新打开窗口,则背景是新创建的。专用和集成 GPU 都会发生这种情况。 我需要做什么才能使它正常工
问题内容: 当用户关闭浏览器窗口或刷新页面时,是否可以运行最终的JavaScript代码? 我在想类似于onload但更像onclose的东西吗?谢谢。 我不喜欢onbeforeunload方法,该方法总是会弹出一个确认框(让页面保留/保留在mozilla上)或(重新加载/不重新加载chrome)。有没有办法安静地执行代码? 问题答案: 好的,我找到了一个可行的解决方案,包括使用事件,然后使处理程
我通过GLX在Linux中编写了一个OpenGL应用程序。它使用双缓冲与glXSwapBuffers和同步到VBlank设置通过NVIDIA X服务器设置设置。我正在使用Compiz,并且可以平滑地移动窗口并且没有撕裂(在Compiz设置中启用了同步到VBlank)。但当我 > 尝试移动 OpenGL 窗口或调整其大小,或 通过OpenGL窗口占用的区域移动其他窗口 系统断断续续,停顿3-4秒。将
我要讲的是第二章http://www.open.gl遇到了一个我搞不懂的绘图问题。 顶点着色器: 片段着色器: 编译时 我没有收到任何警告,但程序运行时会出现一个空白屏幕。我检查了他链接的示例代码以及示例源代码的github副本。不幸的是,他使用的是SFML,而我使用的是GLFW,所以我试图弥补这个差异。 我尽了最大努力模仿他的示例代码(事物的排序等),并在的最后几行中添加了主循环(在教程中没有提
我对glfw有一个小问题。 我的代码非常简单,我只想创建一个空窗口。 } 此代码编译,但当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的......我尝试像那样使用glClearColor。 但是我的窗户仍然是白色的....我用的是visual studio 2015。 怎么弄个黑窗? 编辑: 忘了补充这个:glfwMakeContextCurrent(window);
我有一个程序,在你点击一个动作按钮后,它会运行一个很长的过程。当进程正在运行时,根窗口会说它没有响应,即使我知道程序正在后台运行。这个程序将发布给我的几个同事,我想确保他们看到这个时不会惊慌失措并关闭窗口。我的解决办法是坐在树根上。正在运行的进程的循环中进行更新,但我不确定这是否是最佳修复方法。 使用Python3.3 这是一个代码的示例,所以你可以了解我在做什么,这是从主循环中调用的: