Articles of glfw

GLFW3。 销毁并在黑色窗口中创建新的窗口结果

我正试图写一个全屏切换处理程序,并遇到一个问题。 为了在全屏和窗口之间切换,我需要销毁当前的窗口,并创建一个新的“monitor”参数改变。 我已经写了这个和程序之间的变化窗口和全屏罚款。 但是,创建的新窗口不呈现为黑色。 为了简单起见,我将代码简化为下面的代码,只是用相同的参数创建一个新的窗口: /* generic set up stuff */ //main draw loop while (!glfwWindowShouldClose(window)) { /* generic draw stuff */ if (GLFW_PRESS == glfwGetKey(window, GLFW_KEY_F)){ glfwDestroyWindow(window); window = glfwCreateWindow(g_gl_width, g_gl_height, "Title", NULL, NULL); glfwMakeContextCurrent(window); } } 当程序第一次加载一切渲染罚款。 当我打F时,会创建一个新的窗口,但是它保持黑色。 有任何想法吗? 亲切的问候。

运行时分辨率随GLFW3更改

我一直在试图找出一个正确的方法来改变GLFW窗口的分辨率/全屏状态一段时间,但是在search完所有后,我发现了如何使用旧版本的库这样做的参考。 我怀疑你只是销毁窗口对象,并重新创建它,但不知道,因为如glfwSetKeyCallback一些函数如何将GLFWwindow*作为参数,我不知道是否继续工作之后它已被重新创建。 文档也没有任何的例子,所以任何帮助,将不胜感激。

问题与GLFWinput

我在我的游戏中使用GLFW作为input。 我刚开始学习,遇到了一个问题。 问题是input,我有一个callback函数,在那里我检查按键。 我想程序切换线框模式,当用户按1,因此我有这样的代码: if(key == '1' && action == GLFW_PRESS) { wireframe = !wireframe; } 问题是,我是捷克,我们显然有不同的键盘布局 – 我用英文键盘布局编程,当我按1它的作品,但是,当我按捷克布局相同的键它不起作用,可能是因为我们必须按住Shift键和“1”键,才能在屏幕上显示1。 这似乎很明显,它不起作用,但是当我使用SFML它的工作。 我也尝试用49或0x0031replace'1',但结果是一样的。 有没有解决scheme,或者我必须通过系统API手动设置布局? 提前致谢。

我如何确保GLFWcallback事件只在主循环中发生一次?

问题是鼠标和键盘事件可能在主循环(程序开始渲染和更新内容)之前触发。 在程序中,如果按下button,会有声音效果。 代码看起来像这样 void main() { // Here I initialize everything including parsing model files, // so when the window appears it's initially plain white(loading files and not // drawing stuff). I set up the callback functions with glfwSetKeyCallBack() // and glfwSetMouseButtonCallBack(). // The next line is the main loop while (!glfwWindowShouldClose(window)) { // Here […]

LWJGL3键盘单键input

我正在用lwjgl和GLFW做一个游戏,而且很难搞清楚如何检查键盘上的一个按键。

Mac OSX GLFW全屏崩溃

每当我运行我的代码来创建一个全屏GLFW窗口,它崩溃。 这里是代码: package ext.tpz.test; import static org.lwjgl.glfw.GLFW.*; public class Main { public Main() { } public static void main(String[] args) { if (glfwInit() == false) { System.out.println("GLFW failed to init."); System.exit(1); } long fullscreen = 0; if(args.length >= 1) { if (args[0].equals("-fullscreen")) { fullscreen = 1; } } long win = glfwCreateWindow(640,480, "Test", fullscreen, 0); […]

GLFW / GLEW的1/6的裸机OpenGL游戏引擎崩溃

我目前正在编写一个OpenGL游戏引擎,目前我正在经历一次6次的崩溃。 Visual Studio 2015的错误消息是: 在0x545579C6(nvoglv32.dll)引发exception。 访问冲突读取地址0x085C2000。 它指向主方法的结尾或OBJ Loader类中的这一行代码: return renderer::Model3D( final_vertices, final_uvs, final_normals, final_indices, position, shader); 我相信这是一个渲染问题,涉及到NVIDIA驱动程序问题或GLFW / GLEW问题。 这里是Renderer3D init , flush和submit方法: void Batch::init(std::vector<const Model3D*> models) { glGenVertexArrays(1, &pr_VAO); glGenBuffers(1, &pr_VBO); glBindVertexArray(pr_VAO); glBindBuffer(GL_ARRAY_BUFFER, pr_VBO); glBufferData(GL_ARRAY_BUFFER, RENDERER_BUFFER_SIZE, NULL, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(SHADER_VERTEX_INDEX); glEnableVertexAttribArray(SHADER_UV_INDEX); glEnableVertexAttribArray(SHADER_NORMAL_INDEX); glVertexAttribPointer(SHADER_VERTEX_INDEX, 3, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const GLvoid*)0); glVertexAttribPointer(SHADER_UV_INDEX, 2, GL_FLOAT, GL_FALSE, RENDERER_VERTEX_SIZE, (const […]

glm ::透视不工作?

所以我正在学习如何制作游戏和程序,并且在GFLW中使用GLM来设置投影机时,这行代码拒绝工作,我无法想象为什么。 代码在下面的图片中。 谢谢!

glfw如何处理input?

GLFW显然是一个OpenGL框架,这意味着我们正在使用graphics卡。 如何处理input?似乎它处理我们系统上的所有控制器,而不仅仅是graphics卡。

C ++ glGenBuffers在线程中调用时没有返回正确的VBOID

目前我正在学习如何在C ++中正确使用multithreading,结合OpenGL和GLFW,并且在我的应用程序中遇到了一个奇怪的错误。 我在sidethread中生成了一个程序生成的地形,但是每次我要为生成的地形(块)创建缓冲区时,glGenBuffers()只会将我放入的值给回给我! 它不会创建一个适当的缓冲区。 我甚至用gDEBugger检查过,没有创建VBO。 这里是伪代码: void init(){ //This is in the main thread! sharedWindow = glfwCreateWindow(1, 1, "shared", NULL, NULL); mainWindow = glfwCreateWindow(400, 400, "main", NULL, sharedWindow); glfwMakeContextCurrent(mainWindow); } void terrainGeneratorLoop() { //This is in another thread! glfwMakeContextCurrent(sharedWindow); while(running){ /* Generate vertex data for terrain */ //Upload generated data into GPU: unsigned int m_vbo […]