问题标签 [freeglut]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3062 浏览

c++ - 将现有的 C++ openGL 项目从 glut/freeglut 转换为 glfw

我想将我的科学 3D 应用程序从 Freeglut 升级到 GLFW,但我担心隐藏的冲突或数据丢失,实际上我的应用程序与 Freeglut 一起工作就像一个魅力,我没有任何问题,但现代 OpenGL 推荐使用 GLFW( 3.0+)在所有现代书籍和教程中。

我查看了 GLFW API,它看起来像带glfw*前缀的 Glut,但我不确定。所以我想到了三个问题:

  1. 为了 GLFW 的缘故,是否值得打破我现有的项目,还是坚持使用 freeglut?
  2. 我会因为过剩而失去任何功能吗?
  3. GLFW 与 GTK+ 兼容吗?(因为我的 GUI 是基于 GTK 的)
0 投票
1 回答
3255 浏览

c - extern 函数原型和静态定义

我正在努力让 FreeGLUT 在 OSX 上构建,并且遇到了许多相同问题的实例。许多函数仅存在于 .c 文件中。

这是一个例子

我对 C 的理解有限,但编译器错误似乎是有道理的:

我的问题是,他们这样设置有什么理由吗?它会在其他平台上正确编译吗?

0 投票
2 回答
2075 浏览

opengl - 无法让 Freeglut 在 Windows 上与 Haskell 一起使用

这是我试图开始工作的源代码:

在 Main.hs 中:

在 Bindings.hs 中:

如果我在我的代码中使用普通的 glut32.dll 并且没有任何 freeglut 扩展,它可以工作,但我想使用 freeglut 扩展。

当我使用 freeglut.dll 时,将其重命名为 glut32.dll,并将其放在与我的 .exe 相同的文件夹中,它给了我错误:

当我以同样的方式使用普通的 glut32.dll 时,我得到了错误:

0 投票
1 回答
1094 浏览

c++ - 使用 glDrawElements 从 WRL (VRML) 文件中绘制对象

我正在尝试使用 OpenGL 对 WRL (VRML) 文件中描述的对象进行建模。

我并不真正关心解析文件,我认为这部分会相当简单。在这个阶段,我只是尝试在顶点数组和索引数组中进行硬编码,以便我可以很好地理解它是如何工作的,以便我可以概括任何 WRL 输入文件。

我首先尝试一个基本的盒子(矩形棱镜)模型。我目前有这个顶点数组:

这个索引数组:

它直接来自 WRL 文件Coordinate3 {point []}IndexedFaceSet {coordIndex []}.

然后我通过调用启用顶点数组功能:

glEnableClientState(GL_VERTEX_ARRAY);

并设置 glVertexPointer:

glVertexPointer(3, GL_FLOAT, 0, vertices);

最后我使用 glDrawElements 函数来绘制盒子:

glDrawElements(GL_POLYGON, 24, GL_UNSIGNED_BYTE, indices);

然后停用顶点数组功能:

glDisableClientState(GL_VERTEX_ARRAY);

因此,在此之后,我希望绘制一个框,当我使用glDrawElements(GL_POINTS, 24, GL_UNSIGNED_BYTE, indices);它时,它会显示 8 个顶点,如果正确的顶点与线连接,将代表预期的框(除了中间有一个点,但是当我使用 26 作为计数参数时,中间的点就会消失)

但是,当我在 glDrawElements 的第一个参数中使用 GL_POLYGON 或 GL_LINE_LOOP 时,我得到了垃圾。8 个顶点显然在那里,但它们以非常奇怪的方式连接起来。

我现在很困惑,我什至不确定我这样做是否正确。也许有人至少可以让我朝着正确的方向前进?

0 投票
2 回答
4336 浏览

c++ - 对 Base::object 链接器错误的未定义引用 @ c++ w/freeglut

我有这个代码

///////////////////////////////Gnome.cpp 文件

/////////////////////////////Living.h 文件

// 生活.cpp

// sprite.h

//如果你需要实现请告诉我

//最后是引擎类

//和部分engine.cpp

因此,当我尝试构建它时,链接器显示此错误: Undefined reference to Living::spriteImg

0 投票
3 回答
11555 浏览

macos - 是否可以在 Mac OS X 上构建 FreeGLUT?

我正在做一些关于使用FreeGLUT的 OpenGL 教程。

显然,这是您在 Mac 上构建和安装它的方式:

make不幸的是,当我执行命令时,这本身会给我一个错误:Undefined symbols for architecture x86_64

在做了一些工作之后,我发现第一行的改进是:

不幸的是,当我执行make命令时,我仍然收到错误消息:

之前已经在网上记录了这一点,但在这种情况下,解决方案并不是真的很有帮助。我也尝试将它换成 OS X 附带的 GLUT.framwork,但这些示例使用的是 FreeGLUT 特定的功能。

0 投票
5 回答
6784 浏览

c++ - 关键常数列表

我想检查按键事件,例如按下/按下...

但是我创建的要调用的函数会得到一个“无符号字符”。我可以使用 来检查 W/A/S/D 之类的键key == 'w',但我不知道如何检查其他键。

是否有可用字符的列表,例如“\n”?

0 投票
1 回答
800 浏览

c++ - Glutkeyboard 输入在没有奇数循环的情况下无法注册以提供帮助

我正在努力让键盘输入在 GLUT 中工作,我有很多时间。基本上我的问题是我设置为与某些键关联的操作无法正常工作。

这些是我对 glutKeyboardFunc 和 glutKeyboardUpFunc 的声明和定义:

这些的目标只是将键设置为在按下时设置为真,在释放时设置为假。

然后,我根据按下的键定义了一些要执行的操作:

然后在我的 glutDisplayFunc 中调用 keyOperations。

如果你还在我身边,我的主要功能和一些变量看起来像这样:

我在 main 函数中包含的 for 循环将整个 keyStates 数组重置为 0。这最终应该与 glutKeyboardUpFunc 具有相同的效果,但由于某种原因,如果没有这个 for 循环,keyOperations 将无法正确执行。

我使用 glutKeyboardUpFunc 搜索了一些与我的代码示例类似的代码示例,但在找到非常相似的内容方面并不顺利。我知道 glutKeyboardUpFunc 和 glutKeyboardFunc 中的操作是通过在到达那段代码时插入某种退出命令来执行的。

如果您删除 glutReshapeFunc(reshape); ,则此代码应以其当前形式编译。

我的具体问题是:这个 for 循环会导致所需的旋转效果,如果没有它似乎不会发生?如果你知道,我该如何补救?

此外,按 a 和 d 键在空白平面上的旋转并不明显,但按 w 和 s 应该会产生一些旋转。您可能需要更改 xspeed 和 yspeed 的数量,以使其根据计算机的速度更快/更慢地旋转。

0 投票
1 回答
1633 浏览

opengl - 使用 glut 进行线程处理:glutPostRedisplay 被忽略

我有一个程序更新它的程序输出然后程序的状态改变。这发生在时间的计时(不是 openGL 计时器,一个在线程中实现的计时器)发生时,并且当键盘输入从 glut 注册时(使用 glutKeyboardFunc 回调)。

这两个事件都会更新程序状态并调用 glutPostRedisplay;问题是只有在按下键盘时它才会真正做任何事情。当计时器滴答时,显示函数被忽略,但当键盘被按下时,显示函数被调用。

过剩会忽略其他线程吗?如果是这样,有没有办法让它注册它们。

0 投票
1 回答
9266 浏览

c++ - Windows 7 下带有 C++ 和 OpenGL / Freeglut 的 NetBeans

我最近试图弄清楚如何在 NetBeans 7 中使用 freeglut。我在 Google 上搜索了很多,但没有找到合适的教程来说明如何将我需要的东西绑定到其中。

目前我有更多的问题,然后这个:

第一个是: - freeglut 2.8 => 为了编译它,我需​​要 MinGW 和 msys。我都安装了,但我不能“配置”或“全部制作”和“制作安装”freeglut。对于该任务,我没有找到易于阅读的操作方法。

下一个: - 构建后,将哪些文件放入特定文件夹的位置?

最后一个: - 将文件放入相应文件夹后,如何在NetBeans 7 下在C++ 项目中使用finally freeglut?

我觉得缺乏这方面的信息。

我所找到的总是这样的答案:下载、构建、安装和完成。但我已经被困在“安装”和“构建”上。

解决方案:关闭 NetBeans。

  • 从 mingw.org 安装和下载 MinGW
  • 安装后,将路径添加到您的 SystemEnvironemt(例如:C:\MinGW)。转到开始->计算机,鼠标右键,选择属性转到高级系统设置,在以下对话框中按“环境变量”。在“系统变量”选项卡中,找到条目路径(或 PATH)添加:C:\MinGW;获取 freeglut 预编译包:(http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/)有一个很好的教程如何设置。

现在玩得开心(只需#include“就完成了。玩得开心。

注意 #1:如果您在查找 make 时遇到问题,则文件夹为:C:\MinGW\msys\1.0\bin\make.exe(当在 C:\MinGW 上安装 MinGW 时)。

命令行中的“mingw-get install msys”应该得到 msys... 最后但同样重要的是不要忘记将 msys\bin 添加到路径中。:)

这是一个完整的教程,但是是德语的。 http://techchan.blog.de/2012/03/18/einrichten-opengl-netbeans-7-1-1-teil-0-start-13209096/

如果您需要英文,请告诉我是否可以翻译;)否则我会考虑自己翻译。