草庐IT

c++ - OpenGL 视频内存使用

是否有API或分析器应用程序可以跟踪我的应用程序的视频内存使用情况?我在Windows上使用C++/OpenGL,但我也愿意接受其他平台上的建议。 最佳答案 在MacOSX上,您有OpenGLProfiler.app,它随开发者工具一起提供(在OSDVD上或来自http://developer.apple.com)在Windows上,您可以尝试gDEBugger-一个很好的商业OpenGLProfiling工具。 关于c++-OpenGL视频内存使用,我们在StackOverflow上找

memory - 确定可用的视频内存

在开发OpenGL程序时,有没有办法从系统中轮询以找出有多少兆字节可用于存储纹理等?或者现在的标准方法只是分配内存而忘记一切? 最佳答案 尽管官方的立场仍然是“你不需要知道,你不想知道,而且无论如何它对你没有帮助”,幸运的是,至少有两个IHV最近表现出更多的洞察力,并提供了扩展查询该信息:NVX_gpu_memory_infoATI_meminfo这些扩展的一个好处是它们有一个最小公分母,这正是大多数人所需要的,而且您不需要查询扩展支持或做任何特殊的事情,因为它们都通过glGetIntegerv。在最简单的情况下,您可以将一个由4个

memory - 确定可用的视频内存

在开发OpenGL程序时,有没有办法从系统中轮询以找出有多少兆字节可用于存储纹理等?或者现在的标准方法只是分配内存而忘记一切? 最佳答案 尽管官方的立场仍然是“你不需要知道,你不想知道,而且无论如何它对你没有帮助”,幸运的是,至少有两个IHV最近表现出更多的洞察力,并提供了扩展查询该信息:NVX_gpu_memory_infoATI_meminfo这些扩展的一个好处是它们有一个最小公分母,这正是大多数人所需要的,而且您不需要查询扩展支持或做任何特殊的事情,因为它们都通过glGetIntegerv。在最简单的情况下,您可以将一个由4个

c++ - 可视化深度缓冲区

我正在尝试可视化深度缓冲区以进行调试,方法是在按下键时将其绘制在实际渲染之上。它大部分工作正常,但生成的图像似乎被放大了。(不仅仅是原始图像,灰度奇怪)为什么它与颜色缓冲区的大小不同?这就是我正在使用的View深度缓冲区:voidget_gl_size(int&width,int&height){intiv[4];glGetIntegerv(GL_VIEWPORT,iv);width=iv[2];height=iv[3];}voidvisualize_depth_buffer(){intwidth,height;get_gl_size(width,height);float*data=

c++ - 可视化深度缓冲区

我正在尝试可视化深度缓冲区以进行调试,方法是在按下键时将其绘制在实际渲染之上。它大部分工作正常,但生成的图像似乎被放大了。(不仅仅是原始图像,灰度奇怪)为什么它与颜色缓冲区的大小不同?这就是我正在使用的View深度缓冲区:voidget_gl_size(int&width,int&height){intiv[4];glGetIntegerv(GL_VIEWPORT,iv);width=iv[2];height=iv[3];}voidvisualize_depth_buffer(){intwidth,height;get_gl_size(width,height);float*data=

c++ - 在 OpenGL 中将纹理映射到球体时出现接缝问题

我正在尝试创建几何图形以在OpenGL中表示地球。我有一个或多或少的球体(虽然更接近地球的椭圆大地水准面)。我绘制了地球表面的纹理(可能是墨卡托投影或类似的东西)。纹理的UV坐标对应于几何体的纬度和经度。我有两个我无法解决的问题。我正在使用OpenSceneGraph,但我认为这是一个通用的OpenGL/3D编程问题。有一个非常明显的纹理接缝。我确定会发生这种情况,因为我不知道如何将UV坐标映射到出现接缝的XYZ。我只在环绕之前将UV坐标映射到最后一个顶点……您需要将两个不同的UV坐标映射到同一个XYZ顶点以消除接缝。是否有一个常用的技巧来解决这个问题,还是我做错了?两极发生了疯狂的漩

c++ - 在 OpenGL 中将纹理映射到球体时出现接缝问题

我正在尝试创建几何图形以在OpenGL中表示地球。我有一个或多或少的球体(虽然更接近地球的椭圆大地水准面)。我绘制了地球表面的纹理(可能是墨卡托投影或类似的东西)。纹理的UV坐标对应于几何体的纬度和经度。我有两个我无法解决的问题。我正在使用OpenSceneGraph,但我认为这是一个通用的OpenGL/3D编程问题。有一个非常明显的纹理接缝。我确定会发生这种情况,因为我不知道如何将UV坐标映射到出现接缝的XYZ。我只在环绕之前将UV坐标映射到最后一个顶点……您需要将两个不同的UV坐标映射到同一个XYZ顶点以消除接缝。是否有一个常用的技巧来解决这个问题,还是我做错了?两极发生了疯狂的漩

c++ - 在 OpenSceneGraph 中创建一个球体(使用 osg::Geometry)

我花了很长时间才让它工作,但我的Sphere无法显示。使用以下代码来制作我的功能:Creatinga3DsphereinOpenglusingVisualC++剩下的就是带有osg::Geometry的简单OSG。(注意:不是ShapeDrawable,因为您无法使用它实现自定义形状。)将顶点、法线、纹理坐标添加到VecArrays中。一方面,我怀疑有些行为不端,因为我保存的对象是半空的。有没有办法将现有的描述转换成OSG?原因?我想了解以后如何创建对象。确实,它与稍后的任务相关联,但目前我只是事先准备。旁注:由于我必须在没有索引的情况下制作它,所以我将它们排除在外。但是没有它们,我的

c++ - 在 OpenSceneGraph 中创建一个球体(使用 osg::Geometry)

我花了很长时间才让它工作,但我的Sphere无法显示。使用以下代码来制作我的功能:Creatinga3DsphereinOpenglusingVisualC++剩下的就是带有osg::Geometry的简单OSG。(注意:不是ShapeDrawable,因为您无法使用它实现自定义形状。)将顶点、法线、纹理坐标添加到VecArrays中。一方面,我怀疑有些行为不端,因为我保存的对象是半空的。有没有办法将现有的描述转换成OSG?原因?我想了解以后如何创建对象。确实,它与稍后的任务相关联,但目前我只是事先准备。旁注:由于我必须在没有索引的情况下制作它,所以我将它们排除在外。但是没有它们,我的

c++ - 基本 C++ 内存问题

我的一个friend使用声明了一个新类型typedefGLfloatvec3_t[3];后来使用vec3_t分配内存vertices=newvec3_t[num_xyz*num_frames];他释放了内存使用delete[]vertices;问题:1.既然vec3_t是GLfloat[3]的别名,是不是意味着vec3_t[num_xyz*num_frames]等价于GLfloat[3][num_xyz*num_frames];2.如果上面是一个二维数组,如何正确地从内存中删除?提前致谢;来自deo 最佳答案 1.二维数组可以被认为