当前位置: 首页 > 知识库问答 >
问题:

GLFW设置回调函数

韦欣德
2023-03-14

GLFW中设置回调函数时,要使用什么数据类型

我尝试将函数设置为类型<code>void。将其更改为<code>void __stdcall,但如何使用<code>GLFW的<code>typedef,例如<code>GLFW*fun?我认为这是正确的选择。我真的需要一个示例源代码。

顺便说一句,我将GLFW定义为GLFW_DLL

更新

我的代码是这样的:

(我以三种方式做到了)

原型。因为这些*main下面,所以这个给我一个编译错误(无效转换)

void MouseClick(int, int);
void Keyboard(int, int);
//...

2

//appending `__stdcall` get compiled but gives me `RT error`

void __stdcall MouseClick(int, int);
void __stdcall Keyboard(int, int);

3个

在我的另一个项目中,我使用GLFW_BUILD_DLL并在带有转换的MSVS中编译。

void MouseClick(int x, int y) {

}

在< code>main中...

int main() {

//glfw intialization...

glfwSetKeyCallback(Keyboard);
//other setters

}

但是,我怎么做到这一点呢?

GLFWmouseposfun MousePos {

}

//...

共有2个答案

柴磊
2023-03-14

嗯,对不起,是我的错。我只是没有注意到我有这个< code > Vec2f To _ OGL _坐标(int x,int y)在< code>void MousePos(int x,int y)里面,我没有把它放在我的帖子里。正如我所说的,是Vec2f导致了运行时错误,我将第三个(z)坐标省略为< code>NULL。< code >方法2在这里应该有效,与Jacob Parker的答案相同。我真的不知道这些指针如果使用不当会有什么影响。

(PS。我在2D工作,这就是为什么我忽略了z坐标。我的错)

桑博远
2023-03-14

根据GLFW v2.x的文档,您传递给< code>glfwSetKeyCallback(等等)的原型。)是

void GLFWCALL functionname( int key, int action );

下面是一个完整的C程序,它将打印出关键事件:

#include <stdio.h>
#include <GL/glfw.h>

void GLFWCALL keyfun(int key, int action) {
  printf("%d %d\n", key, action);
}

int main() {
    glfwInit();
    glfwOpenWindow(640, 480, 0, 0, 0, 0, 0, 0, GLFW_WINDOW);
    glfwSetKeyCallback(keyfun);
    while(1) {
      glfwSwapBuffers();
    }
}

如果此代码不起作用,则可能错误地链接到GLFW。

 类似资料:
  • 一般来说,我对GLFW和OpenGL比较陌生,我正在开发一个小型模型渲染器。我目前正在处理输入,我面临着GLFW如何处理输入的问题,让我解释一下:每个教程都告诉我使用glfwGetKey和“if-forest”来查看是否按下了这样或那样的键。我遇到的问题是,如果我映射了很多关键点,它可能会变得很慢,而且很难看。所以我使用函数指针表和glfwSetKeyCallback来加速这一过程并获得更清晰的代

  • 在直播管理页面点击 “回调设置” ,可以 开启回调通知 并 设置回调地址 ,用于直播开始、直播结束、直播录制、离线回放、回放重置后的通知反馈。 关于直播回调的具体功能及使用方法,请参考:回调接口开发指南 。

  • 3.5-为什么当我移动窗口或调整窗口大小时,我的应用程序会冻结? 窗口事件循环会被某些操作阻止,如拖动窗口或调整窗口大小,或打开窗口菜单。这是Windows设计的一部分,不能被GLFW更改。如果您希望在这些操作期间继续呈现,您应该从辅助线程呈现。 --http://www.glfw.org/faq.html

  • 问题内容: 我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。 我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。 在控制台中,显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。 问题答案: 这里的问题是aja

  • 我目前正在使用OpenGL和GLFW开发一个跨平台的2D渲染引擎。我有一个名为GameWindow的基本窗口类,以及一个名为Game的继承GameWindow的类。游戏覆盖了基类中的一些虚拟方法,以便GameWindow可以处理帧限制等。在GameWindow的构造函数中,我使用glfwSetWindowSizeCallback指定窗口调整大小时要运行的方法。然后,此方法调用GameWindow的

  • 问题内容: 有没有一种简单的方法可以将“回调”功能设置为在javascript中打开的新窗口?我想在新窗口中运行父函数,但我希望父函数能够设置此特定函数的名称(因此不应在新的Windows页面中对其进行硬编码)。 例如在父母中,我有: 在子窗口中,我要: 问题是如何创建它和功能。我虽然想将函数的名称作为查询参数发送到新窗口(服务器端脚本在生成的子HTML中生成适当的函数调用),但是我在考虑是否还有