问题标签 [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 投票
2 回答
6085 浏览

c++ - 使用 MinGW、freeglut 和 glew 编译简单的静态 OpenGL 4.0 程序

问题出在标题中,我将尝试在下面列出我已经尝试过的内容,依此类推。

首先,据我了解,为了在 Windows 上使用 OpenGL 4.0,您必须扩展或绕过默认的 Windows 库,因为它仅提供 OpenGL 1.1。

所以我们在C:/MinGW/. 接下来我通过从项目站点下载tarball来设置 FreeGLUT 。通过根据指令运行生成文件并在命令中添加少量内容来提取和编译。--prefix./configure

现在我有 freeglut in /c/Users/Owner/root/lib//c/Users/Owner/root/include/等等。接下来是 GLEW,据我所知,我的问题孩子。

从项目站点下载源存档(直接 1.7.0.zip 链接)。编译有点复杂,我目前的配方来自堆栈溢出问题“使用 mingw 在 Windows 上构建 glew ”。下面列出了一个缩写形式:

并且应该从/path/to/glew-1.7.0/.


现在通过“完成”库的设置(假设没有错误......)编译我的简单程序是用这一行完成的。

现在稍微分解一下,并解释为什么我有各种“额外”的论点,并向您展示我已经遇到并解决了哪些错误和问题。

  1. -DFREEGLUT_STATIC-lfreeglut_static使用而不是正常使用,-lfreeglut因为我们想要在这里进行静态构建。不这样做会导致与 freeglut 相关的链接器错误。
  2. -DGLEW_STATIC出于同样的原因添加。
  3. -lwinmm添加以修复链接器错误:freeglut_init.c:(.text+0x5d9): undefined reference to '_timeBeginPeriod@4'.
  4. -lgdi32添加以修复链接器错误:c:/Users/Owner/root//lib\libfreeglut_static.a(freeglut_init.o):freeglut_init.c:(.text+0x58c): undefined reference to '_GetDeviceCaps@8'

现在我被以下链接器错误难住了:

产生此错误 ( ) 的最小测试用例main.cpp是。

想法?

0 投票
1 回答
9983 浏览

c - 未定义对“GlewInit”的引用 - OpenGL

尝试制作可执行文件时出现此错误,代码编译正确,但是当我点击 make 命令时,我收到以下错误消息:

我正在运行Linux Mint 13,我认为这与我的makefile有关,我对它们了解不多,所以我一起破解了一个并在网上找到了一些代码:

我的代码:

0 投票
2 回答
23187 浏览

c++ - 如何在 Windows 机器上构建或安装 freeglut

我下载了 freeglut。我正在阅读安装说明。我提取了所有文件。我看到一个名为 configure(和 configure.ac)的文件。我打开了 Visual Studio 命令提示符并将目录更改为

C:\DevStuff\OpenGL\freeglut-2.8.0

下一步是配置包

./configure

这看起来像一个 Linux 命令。我应该如何在 Windows 7 机器上完成这种构建?我有视觉工作室 2010 终极版。

更新

我找到了 VS2010 目录并成功执行了构建。我需要freeglut_static.lib,这不是从这个版本中出来的。输出目录

..\..\lib\x86\Debug仅包含一个 lib 文件 freeglut.lib。

我怀疑我需要makefile,但我真的不知道。OpenGL Superbible示例项目需要此库。在示例项目中,当我尝试运行它时出现编译错误:

0 投票
2 回答
20929 浏览

linux - 在 Linux 上安装 Freeglut

我正在尝试在运行 Linux Mint 的计算机上安装 freeglut。我按照这个网站上的步骤操作:http: //freeglut.sourceforge.net/docs/install.php。当我make all在 src 目录中执行此操作时,会出现以下错误:

fatal error: GL/gl.h

此错误由 ../include/GL/freeglut_std.h 给出。经检查,include/GL 目录确实没有任何 gl.h 文件。它也缺少 glu.h,freeglut_std.h 也尝试这样做#include。我该怎么办?为什么 gl.h 和 glu.h 不见了?

0 投票
1 回答
3013 浏览

c++ - OpenGL着色器拒绝链接

问题:

一直在努力让我的代码加载外部着色器,但它不起作用。无论我如何重写代码并再次尝试,我每次都会遇到相同的错误。

着色器编译但不会链接,我在这个函数中有什么做错了吗?顺便说一句,错误捕获块工作得很好。

我正在使用 freeglut、x64 windows 7 和 mingw(而且我没有使用 IDE)

用法:

在我的主循环中GLuint programId = loadShader("vertex.shader", "frag.shader"); ,我启用了它glUseProgram();

[顶点着色器]

片段着色器

0 投票
1 回答
4241 浏览

c++ - exit() 函数无法退出进程

我正在使用 FreeGLUT 在 Linux 中开发多线程 C++ 应用程序。奇怪的是,在我的一个线程中调用 exit() 会导致调用并完成 onexit() 回调,但无法退出我的程序。相反,根据 GDB,它挂在 GLUT 库中的 select() 调用中。

当我按下“q”时,我还有一个键盘回调退出。如果我在程序挂起时按“q”,GLUT 退出正常。

似乎没有人遇到类似的问题。文档说 exit() 应该关闭整个进程,而不仅仅是一个线程,所以不是这样。我难住了。你有什么想法?

编辑:我发现了问题。我错了退出处理程序已经完成。一个库函数调用正在等待一个在调用 exit() 时已经锁定的互斥锁。GLUT 只是利用了空闲时间。谢谢大家的回复。

0 投票
1 回答
175 浏览

c++ - 无法从 freeGlut 项目中获取标准输出

我有免费的 glut 项目,其中包含计算 voronoy 网格、初始化 freeglut 然后绘制网格的代码。

所以程序在控制台模式下工作,然后创建 freeglut 窗口。而且我还有一个单独的程序,它从连接到这个的标准输出管道中读取。我用这个参数创建过程

而且我还尝试了 MSDN 中的标准管道示例。

问题是程序没有从管道接收数据。我也试过 voronoy.exe > test.txt 在 cmd.exe 和 test.txt 仍然是空的。但是如果我在没有管道的情况下运行它 - 它工作正常,我可以在控制台中看到输出。

0 投票
1 回答
1615 浏览

c++ - 在没有父窗口的情况下显示 Gtk::FileChooserDialog

我正在编写一个带有 OpenGL GUI 的应用程序。在 Windows 上,我GetOpenFilename用来允许用户选择一个文件。

Gtk::FileChooserDialog我尝试使用(遵循本教程)在 Linux for Gtk 上实现类似的功能。我试图保持 Windows 和 Linux 的函数签名相同,所以我将示例修改为如下所示:

主要区别在于我消除了该set_transient_for位,因为我的主窗口不是由 Gtk 管理的(它是由 freeglut 创建的)。

问题:在我选择一个文件后,对话框就冻结了。我的应用程序继续运行,我可以处理选定的文件,只是冻结的对话框。

选择文件后如何关闭对话框?我试过dialog.hide()了,但它似乎没有任何效果。我也试图在这个函数中包含 Gtk 特定的代码,而不是特定于int main()平台的代码。

0 投票
1 回答
3162 浏览

c++ - 带有 GLUT 的 OpenGL。不会画画?

理论上,这段代码应该绘制一个白色矩形。但我看到的只是一个黑色的空屏幕。怎么了?

0 投票
1 回答
2224 浏览

glut - FreeGlut“glutMotionFunc”操作

我是过剩编程的新手。我只想创建一个窗口并显示鼠标的坐标(在窗口内)。当我按下鼠标按钮(在窗口内)并且光标在窗口外时,glutMotionFunc处于活动状态是正常的吗?如果不是我错在哪里?我在这里发布代码: