我最近开始学习OpenGL(> 3.3)并且我注意到很多示例和教程都使用了freeglut和glew,但是并没有真正解释它们的区别.我在谷歌搜索和阅读广告后发现的最好的描述是这个OpenGL相关的工具包和API,但发现它缺乏.我甚至在SO上读过标签信息.
作为OpenGL的新手,我仍然试图掌握不同的概念.我已经到了创建基本程序的阶段,该程序使用glew,创建上下文(在Windows上,VS2010),并绘制真正基本的形状,所有这些都不需要明确包含freeglut.所以我不明白为什么我需要它.
所以我的问题是,有什么区别:
-freeglut
-glew
- (&glfw)
另一个人不能
做什么呢?
我想使用一些类似的框架glew,cg所以我手动添加
右键单击项目所需的框架到我的项目 - >将文件添加到...
并选择正确的框架.问题是,当我尝试包含头文件时,
Xcode无法找到它们中的任何一个.我希望这张照片有助于理解:

和:

给出的错误是针对glew框架的,但它也会发生Cg.
正如您在左侧所看到的,添加了所需的框架.
关于如何包含这些标题的任何想法?
尝试手动添加头文件后,我遇到了一个架构错误:

我不知道这是不是应该是这样的.谢谢!
我按照本教程中的说明将OpenGL安装到运行Linux Mint的计算机上.我正在尝试编译一个使用OpenGL的程序,但是我遇到了编译错误:fatal error: GL/glew.h: No such file or directory.我检查/ usr/include/GL文件夹,确实缺少glew.h.我不知道为什么它丢失了,因为我做了命令sudo apt-get install libglew1.5并且它给出了输出:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libglew1.5 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 465 not upgraded.
Run Code Online (Sandbox Code Playgroud)
为什么缺少glew.h文件?
谁能给我正确的命令,用mingw在windows上构建glew?
我试过了:
gcc -static glew.c glewinfo.c visualinfo.c -I/path/to/glew/include
但我收到了数以千计的链接器错误(缺少引用).
我不能用Make构建,因为不幸的是makefile有很多unix命令,我没有cygwin或任何工作.
(或者,如果有人可以指向我的Windows 32b构建我将非常感激)
嗨我有链接Glfw和其他库使用cmake的问题.从命令行我编译如下
g++ main.cpp -lGL -lGLU -lGLEW -lglfw
Run Code Online (Sandbox Code Playgroud)
但我想用cmake进行编译.我试图使用target_linkg_libraries,但这会产生错误
CMakeLists.txt上的CMake错误:18(target_link_libraries):无法为目标"GL"指定不是由此
项目构建的链接库.
我尝试使用添加定义来做到这一点.我没有看到错误,但这不链接库.
cmake_minimum_required (VERSION 2.6)
project (test)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
ADD_DEFINITIONS(
-lGL
-lGLU
-lGLEW
-lglfw
)
add_executable(test.out
main.cpp
)
target_link_libraries(GL GLU GLEW glfw)
Run Code Online (Sandbox Code Playgroud) 好的,所以我已经知道为什么我需要GLEW,但只有一点.
如果我使用现代OpenGL的东西,可能是从版本3.0开始,和/或使用核心配置文件,那么GLEW是必需的,因为没有它编译产生的错误,如未glGenVertexArrays声明.
所以GLEW做了一些背景工作,包括我们想要使用的现代OpenGL函数.
除此之外,还有什么其他的吗?另外,它是如何工作的.
举个例子,它是否改进了跨平台编译?(例如,如果从Linux迁移到Windows或OS X,需要对代码进行少量修改?
它是否也改善了图形硬件的"跨平台性"?例如,假设我们有两台相同的计算机,包括操作系统.在一个系统上使用OpenGL 4.3命令编译程序.如果其他系统有只支持OpenGL 3.3的显卡或驱动程序,那么GLEW会帮忙吗?(也许是为旧版OpenGL编译着色器?)
所以你可能会发现我实际上并不知道GLEW做了什么或它是如何做到的.
最后一点; 有谁知道如何使用GLEW与GLFW?我可能会将其作为一个单独的问题发布.
我一直在Windows上使用OpenGL扩展这种痛苦的方式.GLEW是更容易的方式吗?我该如何开始使用它?
我使用GLEW和freeglut.出于某种原因,在调用glewInit()之后,glGetError()返回错误代码1280,即使使用glewExperimental = GL_FALSE也是如此.
我无法编译着色器,glGetProgramInfoLog()返回"在调用glLinkProgram()之前未成功编译顶点着色器.链接失败." 之前我能够编译着色器.
重新安装驱动程序没有帮助.
这是我的代码:
int main(int argc, char* argv[])
{
GLenum GlewInitResult, res;
InitWindow(argc, argv);
res = glGetError(); // res = 0
glewExperimental = GL_TRUE;
GlewInitResult = glewInit();
fprintf(stdout, "ERROR: %s\n", glewGetErrorString(GlewInitResult)); // "No error"
res = glGetError(); // res = 1280
glutMainLoop();
exit(EXIT_SUCCESS);
}
void InitWindow(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitContextVersion(4, 0);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,
GLUT_ACTION_GLUTMAINLOOP_RETURNS);
glutInitWindowPosition(0, 0);
glutInitWindowSize(CurrentWidth, CurrentHeight);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
WindowHandle = glutCreateWindow(WINDOW_TITLE);
GLenum errorCheckValue = glGetError();
if (WindowHandle …Run Code Online (Sandbox Code Playgroud) 我试图用最新版本的qt创建器设置SFML 2.0,我已经设置了SFML,我导入了一个我在visual studio中编写的小游戏.编译后,我得到这个:

我尝试了什么
额外细节
我正在运行Windows XP SP3,最新版本的mingw和qt SDK以及SFML
我正在尝试使用的代码在Visual Studio 2010 和 Code :: Blocks 上没有任何错误甚至警告
我自己没有编译SFML
我的gcc版本是4.6.2
我的gcc是DW2
我没有得到任何结果,我甚至不知道如何远程接近解决这个问题,甚至不知道从哪里开始.
编辑 我无法向您展示我的所有代码,它是超过20个文件,我几乎90%确定它不是我的代码,我上面说过:我可以运行此代码,没有任何警告甚至任何IDE上的错误除了qt创建者.
我在Linux Mint 13 XFCE上.我的问题是,当我在终端运行命令时:
glxinfo | grep "OpenGL version"
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
OpenGL version string: 3.3.0 NVIDIA 295.40
Run Code Online (Sandbox Code Playgroud)
但是当我glGetString(GL_VERSION)在我的应用程序中运行时,结果为null.为什么这段代码没有得到gl_version?
#include <stdio.h>
#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <GL/glext.h>
int main(int argc, char **argv) {
glutInit(&argc, argv);
glewInit();
printf("OpenGL version supported by this platform (%s): \n",
glGetString(GL_VERSION));
}
Run Code Online (Sandbox Code Playgroud)