草庐IT

c++ - g++ 链接器 :/usr/lib/libGL. so.1:无法读取符号:无效操作

我正在尝试在Ubuntu10.04(我有一个32位系统)下构建一个非常简单的OpenGL应用程序。当我试图编译文件时,我收到错误消息:g++-L/usr/libsimple.cpp-lglut/usr/bin/ld:/tmp/ccoPczAo.o:undefinedreferencetosymbol'glEnd'/usr/bin/ld:note:'glEnd'isdefinedinDSO//usr/lib/libGL.so.1sotryaddingittothelinkercommandline//usr/lib/libGL.so.1:couldnotreadsymbols:Inval

c++ - 在 SDL 1.3 中创建 OpenGL 3.2/3.x 上下文

我遇到了SDL表示它不支持OpenGL3.x上下文的问题。我正在尝试按照本教程进行操作:CreatingaCrossPlatformOpenGL3.2ContextinSDL(C/SDL).在这种情况下,我使用的是GLEW,但我也无法让gl3.h使用它。这是我最终得到的代码:#include#includeintTesting::init(){if(SDL_Init(SDL_INIT_EVERYTHING)报告的唯一问题是在尝试调用SDL_GL_CreateContext(window)之后,SDL报告“不支持GL3.x”。然而,教程和这个samplepack(我没有费心去测试)报告成

c++ - glEnableClientState 已弃用

我想使用GL_POINT_SPRITE_ARB+VBO进行粒子系统渲染。我已经用point_sprites完成了所有准备工作,但仍然停留在VBO。glEnableClientState似乎不起作用。我读到它在现代openGL中已被弃用。那么,我应该改用什么? 最佳答案 glEnableClientState是您告诉OpenGL您正在为特定固定功能属性(gl_Vertex、gl_Color、ETC)。这些都已从核心上下文中删除。你应该使用glEnableVertexAttribArray启用genericvertexattribute

c++ - 物理引擎 : use double or single precision?

我正在从头开始制作一个刚体物理引擎(用于教育目的),我想知道我应该为它选择单精度还是doublefloat。我将使用OpenGL对其进行可视化,并使用glm库在引擎内部计算内容以及进行可视化。惯例似乎是在几乎所有地方都为OpenGL使用float,glm::vec3和glm::vec4似乎在内部使用float.我还注意到虽然有glm::dvec3和glm::dvec4但似乎没有人使用它。我如何决定使用哪个?double似乎很有意义,因为它具有更高的精度并且在今天的硬件上性能几乎相同(据我所知),但其他一切似乎都使用float除了一些GLu的功能和一些GLFW的。

c++ - OpenGL 旋转

我正在尝试在OpenGL中进行简单的旋转,但一定是忽略了重点。我不是在寻找特定的修复方法,而是在寻找更普遍地解释OpenGL旋转的快速解释或链接。目前我有这样的代码:glPushMatrix();glRotatef(90.0,0.0,1.0,0.0);glBegin(GL_TRIANGLES);glVertex3f(1.0,1.0,0.0);glVertex3f(3.0,2.0,0.0);glVertex3f(3.0,1.0,0.0);glEnd();glPopMatrix();但结果不是旋转90度的三角形。编辑嗯,感谢MikeHaboustak-看起来我的代码正在调用一个使用glOr

c++ - opengl,瓷砖之间的黑线

当将其转换为整数值(1、2、3等)时,磁贴之间没有黑线,看起来不错。但是,当将其转换为非整数(1.1、1.5、1.67)时,每个图块之间都有一条很小的黑色线条(我在想这是由于亚像素渲染造成的,对吧?)……而且看起来不太漂亮=P所以我该怎么做?顺便说一下,这是我的图像加载代码:boolImage::load_opengl(){this->id=0;glGenTextures(1,&this->id);this->bind();//Parameters...TODO:Shouldwechangethis?glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MOD

c++ - Direct3D 是否应该用于 Windows 中的 OpenGL?

由于Microsoft通常对Direct3D有一点偏见,在Direct3D中使用VBO的场景会比在OpenGL中使用VBO的相同场景更快,还是一样,因为这取决于显卡驱动程序?谢谢 最佳答案 在性能方面,假设GPU驱动程序不错,总体上没有区别。有些操作在OpenGL中比在DirectX9中更快,尽管DX10弥补了这一点。但在使用外部硬件时,一个好的经验法则是决定性能的不是您使用的API。编写网络代码时,瓶颈是网络适配器,无论您的套接字代码是用.NET编写的、用C编写的普通Berkeley套接字,还是可能使用某些Python库,都没有关

c++ - 替换 gluPerspective(使用 glFrustrum)

如何将gluPerspective函数转换为glFrustum?我曾尝试使用此等式,但运气不佳,因为它生成的图像与使用gluPerspective生成​​的图像不同。top=tan(fov*3.14159/360.0)*nearbottom=-topleft=aspect*bottomright=aspect*top我似乎无法正确转换我的视野。例如,如果我的FOV是45,那么Frustum调用中的“top”参数是什么? 最佳答案 开始吧-您可以使用以下方法代替gluPerspective:voidperspectiveGL(GLdo

在OpenGL ES 2.0中平滑模糊高斯

我试图使高斯平滑模糊,但我对如何进行旋转不知道。我尝试了一些这样的事情:#version100precisionmediumpfloat;varyingvec3vColor;varyingvec2TexCoords;uniformsampler2Dtexture0;uniformfloatradius;uniformvec2dir;uniformresolution;voidmain(){vec4sum=vec4(0.0);vec2tc=TexCoords;floatblur=radius/resolution;floathstep=dir.x;floatvstep=dir.y;sum+=te

c++ - 透视投影中的 3D 场景平移 (OpenGL)

我设计了一个C++类,将用户从轨迹球旋转、缩放和平移中抽象出来。我已经按预期进行了旋转(使用轨迹球)和缩放。但是,平移并不像预期的那样运行。当我选择一个点并拖动时,我希望在完成拖动时,选择的点继续位于鼠标下方。我对透视投影中的平移的理解如下。目标和相机位置都会受到平移操作的影响。相机目标和相机位置(眼睛)应与阻力成比例地平移。比例(可能不是常数)应基于z深度。平移在正交投影中是直截了当的,但会带来透视问题。如果能够解释OpenGL的数学和实现细节,将会很有用。 最佳答案 我不知道OpenGL的细节,但如果我正确理解你的问题,我可以帮