GLFW3 错误:“glfwGetWin32Window”未在此范围内声明
Posted
技术标签:
【中文标题】GLFW3 错误:“glfwGetWin32Window”未在此范围内声明【英文标题】:GLFW3 error: 'glfwGetWin32Window' was not declared in this scope 【发布时间】:2013-10-30 10:40:11 【问题描述】:我在 GLFW3 documentation 中寻找原生 API 访问以获取 HWND
,但它不在我的 GLFW/glfw3.h
文件中。是否有任何#define
能够通过编译器找到它?我也无法使用text-finder
在文件本身中手动找到它,那我该如何获取呢?
PS。我无法标记glfw3
。
编辑:
代码:
#define GLFW_INCLUDE_GLU
#define GLFW_EXPOSE_NATIVE_WGL
#define GLFW_EXPOSE_NATIVE_WIN32
#include <GL/GLFW/glfw3native.h>
#include <GL/GLFW/glfw3.h>
#include <ctime>
#include <cstdlib>
...
int main()
//glfw setup
...
//bla bla bla
...
//all I want to do is to call this one
ScreenToClient( glfwGetWin32Window(window), &point);
【问题讨论】:
试图包含glfw3native.h
?
@thokra 哦,谢谢伙计,但是如何知道我使用的是哪个“上下文 API”?
编辑:从头开始,context API 是什么意思?
@thokra 我已经这样做了#define GLFW_EXPOSE_NATIVE_WGL
和#define GLFW_EXPOSE_NATIVE_WIN32
,但仍然说no context API specified
。我在包含头文件之前定义它。
@thokra Uhm,我不知道还有什么意思。是编译器在抱怨。
【参考方案1】:
在对您的问题感到困惑后,我自己尝试了一下,我认为 include 顺序 是您的问题。一个在 Linux 上模仿您在 Windows 上尝试执行的操作的最小代码示例可以按预期编译和工作:
#define GLFW_EXPOSE_NATIVE_X11
#define GLFW_EXPOSE_NATIVE_GLX
#include <GLFW/glfw3.h>
#include <GLFW/glfw3native.h>
int main (int argc, char ** argv)
glfwInit();
GLFWwindow* window = glfwCreateWindow (256, 256, "GLFW", nullptr, nullptr);
glfwGetX11Window(window);
glfwTerminate();
return 0;
编辑:添加glfwTerminate()
以进行正确清理。请注意,当然应该进行适当的错误检查,但为了演示一个最小的示例,以上内容就足够了。
【讨论】:
以上是关于GLFW3 错误:“glfwGetWin32Window”未在此范围内声明的主要内容,如果未能解决你的问题,请参考以下文章
GLFW3 中是不是有 glutDisplayFunc 等价物?