标签: opengl

如何在opengl中启用垂直同步?

你如何启用垂直同步?

它简单glEnable(GL_VSYNC)吗?(虽然在glEnable接受的选项中没有GL_VSYNC或类似的东西).

或者在opengl中没有标准的方法吗?

opengl vertical-sync vsync

36
推荐指数
3
解决办法
6万
查看次数

ARB在opengl函数中的含义是什么?

这应该很简单,我只是没有找到任何参考.

opengl

35
推荐指数
1
解决办法
1万
查看次数

如何在OpenGL上渲染屏幕?

我的目标是将没有窗口的OpenGL场景直接渲染到文件中.场景可能比我的屏幕分辨率大.

我怎样才能做到这一点?

我希望能够选择任何大小的渲染区域大小,例如10000x10000,如果可能的话?

c++ windows opengl off-screen

35
推荐指数
2
解决办法
5万
查看次数

将任意三角形打包成有限的盒子?

我需要将三角形打包成一个盒子,尽可能合理,作为3D优化的一部分(我将使用不同纹理的片段填充到单个不同的纹理中,用于深度排序,因此纹理不会切换每一个新的三)

有这样做的算法吗?三角形本身可以制成可叠加的(可转换为直角,有效地使其成为盒填充算法),但我想尽可能避免这种情况,因为它会扭曲底层纹理艺术.

c++ opengl algorithm optimization

35
推荐指数
1
解决办法
933
查看次数

0是有效的OpenGL纹理ID吗?

glGenTextures(1, &textureid);
Run Code Online (Sandbox Code Playgroud)

假设纹理是成功创建的,纹理是否为0?

opengl

34
推荐指数
2
解决办法
8612
查看次数

从高度图生成法线贴图?

我正在使用随机分形为视频游戏在程序上生成一些污垢.我已经使用中点位移算法生成了高度图并将其保存到纹理中.我有一些关于如何将其变成法线纹理的想法,但是一些反馈将非常受欢迎.

我的高度纹理目前是257 x 257灰度图像(高度值是为了可见性而缩放):

在此输入图像描述

我的想法是,图像的每个像素表示在256×256网格的格子坐标(因此,为什么有257 X 257的高度).这意味着坐标(i,j)处的法线由(i,j),(i,j + 1),(i + 1,j)和(i + 1,j + 1)处的高度确定. )(分别称为A,B,C和D).

因此,考虑到A,B,C和D的3D坐标,它是否有意义:

  1. 将四个分成两个三角形:ABC和BCD
  2. 通过叉积计算这两个面的法线
  3. 分为两个三角形:ACD和ABD
  4. 计算这两个面的法线
  5. 平均四个法线

......还是有一种我更容易丢失的方法?

c++ opengl graphics

34
推荐指数
4
解决办法
5万
查看次数

在OpenGL中可视化4D对象

你知道任何积极开发的C/C++库,它可以采用一堆(最好是大量)4D顶点,将它们投射到3D空间中,相对于某些任意"4D相机"投影矩阵并输出常规3D顶点我可以用OpenGL进行硬件加速可视化吗?我还需要能够在4D空间中执行标准变换(平移,沿所有4个轴旋转和均匀缩放).

c c++ opengl

34
推荐指数
1
解决办法
4256
查看次数

jMonkey优化类似于Java3D的

编辑:为了进行实时绘图,在opengl和opencl之间的"互操作性"中开始使用ljjgl(jmonkeyengine和jocl的基础),现在可以实时计算和绘制100k粒子.也许mantle版本的jmonkey引擎可以解决这个drawcall开销问题.

几天来,我一直在学习Eclipse(java 64位)中的jMonkey引擎(版本:3.0)并尝试使用GeometryBatchFactory.optimize(rootNode);命令优化场景.

没有优化(具有改变球体位置的能力):

在此输入图像描述

好的,只有1-fps来自pci-express带宽+ jvm开销.

通过优化(无法改变球体位置):

在此输入图像描述

现在即使三角形数量增加也是29 fps.

Java3D有一种setCapability()方法,即使在优化的形式下也能够读/写场景对象.jMonkey引擎3.0必须能够满足这个主题,但我找不到它的任何痕迹(搜索过的教程和示例,失败了).

问题:如何在jMonkey 3.0中设置场景节点的read/write position/rotation/scale功能optimized?如果你不能回答第一个问题,你能告诉我为什么在使用优化命令时三角数会增加吗?我是否必须创建一种新方法来访问图形卡并自己更改变量(可能是jogl?)?

场景信息:16k粒子(16x16 res的球体)+ 1点光源(以及4096分辨率的阴影).

我确信我们可以通过pci-express轻松地在几毫秒内发送数千个浮点数.

  • 附加信息:我正在使用Aparapi内核来更新粒子位置,这需要10毫秒(16k*16k的交互来计算力).(在优化模式下不会改变任何东西:()aparapi可以访问那些优化数据吗?

对于batchNode.batch();优化的情况,这里再次使用减少的对象数1 fps:

在此输入图像描述

对象编号现在只有几百个,但fps仍然是1!

将球体位置发送到gpu并让它计算顶点位置可能比计算cpu上的顶点以及向gpu发送大量数据更好.

这里没有人帮忙吗?已经尝试过batchNode但没有帮助.

我不想改变3d api,因为jMonkey人已经重新发明了轮子,我对目前的情况很满意.只是试图挤出更多的性能(取消阴影给出100%的速度,但质量也很重要!).

这个java程序将成为一个小行星撞击场景模拟器(将有小行星大小,质量,速度,角度的选择)与带有LOD的行进立方体算法(将是数百万个粒子).

Marching-cubes算法会大大减少三角形数.如果你无法回答这个问题,那么任何行进立方体(或任何O(n)凸包)算法都将被接受!数据:作为源的x,y,z数组和作为目标的三角形条形阵列(等面网格点)

谢谢.

以下是有关流的一些示例(分辨率低得多):

1)通过引力折叠立方体形状的岩石组: 在此输入图像描述

2)排斥力开始显现: 在此输入图像描述

3)排斥力+引力使得组形成更平滑的形状: 在此输入图像描述

4)组形成一个球体(如预期的那样): 在此输入图像描述

5)然后,一个大的恒星身体接近: 在此输入图像描述

6)即将触摸: 在此输入图像描述

7)影响的时刻: 在此输入图像描述

借助Barnes-Hutt算法和截断电位,粒子数将增加10倍(可能超过100倍).

不是Marching-Cubes算法,包裹nbody的鬼布可以给出低分辨率的船体(比BH更容易但需要更多的计算)

鬼布会受到nbody(重力+排除)的影响,但是不会受到包裹它的布的影响.Nbody不会被渲染,但布料网格将以较低的triange数量渲染.

在此输入图像描述 在此输入图像描述

如果MC或以上工作,这将使程序渲染一个包裹布,大约200倍的粒子.

java opengl java-3d jmonkeyengine aparapi

34
推荐指数
1
解决办法
3090
查看次数

什么时候应该调用glVertexAttribPointer?

glVertexAttribPointer应该调用何时从文档中看不出来.看起来它是VBO初始化的一部分,但我注意到在渲染过程中调用它的示例代码.

glVertexAttribPointer(vertexAttributeId, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), reinterpret_cast<const GLvoid*>(offsetof(Vertex2D, m_x)));

应该glVertexAttribPointer在初始化期间调用,GL_ARRAY_BUFFER还是应该在渲染期间调用(调用之后glBindBuffer)?

opengl

34
推荐指数
1
解决办法
2万
查看次数

编译OpenGL程序GL/glew.h缺失

我按照本教程中的说明将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文件?

linux opengl glew

33
推荐指数
2
解决办法
5万
查看次数