问题标签 [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.
c++ - 将现有的 C++ openGL 项目从 glut/freeglut 转换为 glfw
我想将我的科学 3D 应用程序从 Freeglut 升级到 GLFW,但我担心隐藏的冲突或数据丢失,实际上我的应用程序与 Freeglut 一起工作就像一个魅力,我没有任何问题,但现代 OpenGL 推荐使用 GLFW( 3.0+)在所有现代书籍和教程中。
我查看了 GLFW API,它看起来像带glfw*
前缀的 Glut,但我不确定。所以我想到了三个问题:
- 为了 GLFW 的缘故,是否值得打破我现有的项目,还是坚持使用 freeglut?
- 我会因为过剩而失去任何功能吗?
- GLFW 与 GTK+ 兼容吗?(因为我的 GUI 是基于 GTK 的)
c - extern 函数原型和静态定义
我正在努力让 FreeGLUT 在 OSX 上构建,并且遇到了许多相同问题的实例。许多函数仅存在于 .c 文件中。
这是一个例子
我对 C 的理解有限,但编译器错误似乎是有道理的:
我的问题是,他们这样设置有什么理由吗?它会在其他平台上正确编译吗?
opengl - 无法让 Freeglut 在 Windows 上与 Haskell 一起使用
这是我试图开始工作的源代码:
在 Main.hs 中:
在 Bindings.hs 中:
如果我在我的代码中使用普通的 glut32.dll 并且没有任何 freeglut 扩展,它可以工作,但我想使用 freeglut 扩展。
当我使用 freeglut.dll 时,将其重命名为 glut32.dll,并将其放在与我的 .exe 相同的文件夹中,它给了我错误:
当我以同样的方式使用普通的 glut32.dll 时,我得到了错误:
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 个顶点显然在那里,但它们以非常奇怪的方式连接起来。
我现在很困惑,我什至不确定我这样做是否正确。也许有人至少可以让我朝着正确的方向前进?
c++ - 对 Base::object 链接器错误的未定义引用 @ c++ w/freeglut
我有这个代码
///////////////////////////////Gnome.cpp 文件
/////////////////////////////Living.h 文件
// 生活.cpp
// sprite.h
//如果你需要实现请告诉我
//最后是引擎类
//和部分engine.cpp
因此,当我尝试构建它时,链接器显示此错误: Undefined reference to Living::spriteImg
c++ - 关键常数列表
我想检查按键事件,例如按下/按下...
但是我创建的要调用的函数会得到一个“无符号字符”。我可以使用 来检查 W/A/S/D 之类的键key == 'w'
,但我不知道如何检查其他键。
是否有可用字符的列表,例如“\n”?
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 的数量,以使其根据计算机的速度更快/更慢地旋转。
opengl - 使用 glut 进行线程处理:glutPostRedisplay 被忽略
我有一个程序更新它的程序输出然后程序的状态改变。这发生在时间的计时(不是 openGL 计时器,一个在线程中实现的计时器)发生时,并且当键盘输入从 glut 注册时(使用 glutKeyboardFunc 回调)。
这两个事件都会更新程序状态并调用 glutPostRedisplay;问题是只有在按下键盘时它才会真正做任何事情。当计时器滴答时,显示函数被忽略,但当键盘被按下时,显示函数被调用。
过剩会忽略其他线程吗?如果是这样,有没有办法让它注册它们。
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/
如果您需要英文,请告诉我是否可以翻译;)否则我会考虑自己翻译。