- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个代码 fragment ,它们的行为应该相似,也可能不是,我仍在研究 OpenGL ES 如何与 Android 的 Java 绑定(bind)。但是我真的很想知道为什么 fragment B 和 C 的行为不同:
以下 (A) 有效:
ByteBuffer bb = ByteBuffer.allocateDirect(8);
bb.order(ByteOrder.nativeOrder());
IntBuffer ib = bb.asIntBuffer();
Log.d("Info", "Generating buffers...");
GLES20.glGenBuffers(2, ib);
Log.d("Info", "Done!");
int buff1 = ib.get();
int buff2 = ib.get();
Log.d("A) buff1", String.format("%d", buff1));
Log.d("A) buff2", String.format("%d", buff2));
以下 (B) 不起作用,并会导致 glGenBuffers 上出现 SIGSEGV;请注意,与之前的唯一区别在于 allocate 调用而不是 allocateDirect:
ByteBuffer bb = ByteBuffer.allocate(8);
bb.order(ByteOrder.nativeOrder());
IntBuffer ib = bb.asIntBuffer();
Log.d("Info", "Generating buffers...");
GLES20.glGenBuffers(2, ib);
Log.d("Info", "Done!");
int buff1 = ib.get();
int buff2 = ib.get();
Log.d("B) buff1", String.format("%d", buff1));
Log.d("B) buff2", String.format("%d", buff2));
以下 (C) 有效,这真的让我感到惊讶,因为它又是对 allocate 的调用,而不是对 allocateDirect 的调用:
IntBuffer ib = IntBuffer.allocate(2);
Log.d("Info", "Generating buffers...");
GLES20.glGenBuffers(2, ib);
Log.d("Info", "Done!");
int buff1 = ib.get();
int buff2 = ib.get();
Log.d("C) buff1", String.format("%d", buff1));
Log.d("C) buff2", String.format("%d", buff2));
用“works”一词,我的意思是日志中没有显示任何错误,并且 buff1 和 buff2 获得正的“合理”值,例如 70001、140002 或 210004,看起来它们可能是名称。
最佳答案
答案似乎是 JOGL Javadoc page ,在接口(interface)GL的文档中,方法:
void glGenBuffers(int n, IntBuffer buffers)
这里说缓冲区应该是直接OR数组支持IntBuffer,并且在(B)中创建的缓冲区不是这些,而(A)是直接的,但没有支持,(C)不是直接的,但有支持。
现在我想知道是否有 Google 官方文档将 OpenGL 绑定(bind)到 Dalvik 系统,或者我应该假设它正是 JOGL?它不应该相同,因为接口(interface)名称不同(例如 JOGL 的 GLES2 与 Android GLES20)。
关于java - 适用于 Android 的 IntBuffer、ByteBuffer、ByteOrder 和 GLES20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12331178/
谷歌没有找到答案,所以我来问 static float vertices_textures[] = { //vertices //positions
我正在使用 : 读取整数文件 int len = (int)(new File(file).length()); FileInputStream fis = new FileInputStream(f
我想在 Java 中分配一个直接 IntBuffer,比如说 10 亿个元素(64 位系统)。我知道的唯一方法是创建一个直接 ByteBuffer 并将其视为直接 IntBuffer。但是,4*1,0
所以我有一大堆我必须处理的整数(大约 70Mb)。作为阅读过程的一部分,我需要暂时存储它们。我可以将它们分布在多个 IntBuffer 上,或者分配几个大数组。 但是,我找不到任何关于 IntBuff
每当我运行以下代码时,java 在释放 IntBuffer 时都会返回 EXCEPTION_ACCESS_VIOLATION: public int[] size(){ IntBuffer s
我在 IntBuffer 中有图像的 RGB 数据,并希望通过绘画将其显示在 JPanel 上。最有效的方法是什么? 编辑 目前我通过以下代码将数据绘制到 BufferedImage 上,但想知道是否
abstract class IntBuffer 似乎无论如何都无法创建此类的实例,因为它声明为抽象,但同时,还有一个静态工厂方法IntBuffer allocate(intcapacity) 现在您
正如标题所说,它想要创建一个由特定(已经存在的)IntBuffer 支持的 BufferedImage。 到目前为止,我有以下代码: final IntBuffer buf = ...; DataBu
我有以下代码: IntBuffer DrawBuffers = Utils.createIntBuffer(2); int bfs[] = {GL30.GL_COLOR_ATTACHMENT0
在使用堆外缓冲区时,可能需要将它们复制到数组中。假设我们不知道缓冲区是关闭还是在堆上。如何填写执行? IntBuffer b = ... // could be off or on -heap int
在大多数 Android 设备上,如果我用整数而不是 float 进行所有 OpenGL 顶点计算/渲染,我是否应该期待性能提升? 我最近从使用 0:width, 0:height 而不是 -1:1,
我试图获取一组 mipmaplevels 并将其保存到本地缓存文件,以避免每次都重建它们(并且预先生成它们是不切实际的......) 我已经将 mipmaplevels 放入了一组位图中,现在想将它们
我正在开发一个 Android 应用程序(显然是用 Java 编写的)并且我最近更新了我的 UDP 阅读器代码。在这两个版本中,我都设置了一些缓冲区并接收了一个 UDP 数据包: byte[] buf
我知道一个快速的方法,可以将byte/short/int/long数组转换成ByteBuffer,然后得到一个字节数组。例如,要将字节数组转换为短数组,我可以这样做: byte[] bArray =
我有三个代码 fragment ,它们的行为应该相似,也可能不是,我仍在研究 OpenGL ES 如何与 Android 的 Java 绑定(bind)。但是我真的很想知道为什么 fragment B
我希望能够在我的 Android 应用程序中添加一些 native C 代码。我有一个 IntBuffer 用作 OpenGL 的 glColorPointer 方法的参数。这是填充/使用这样的东西:
这里还有其他关于此主题的问题,其中大部分涉及 ByteBuffer 和 asIntBuffer。但是,我还没有看到任何关于如何在转换为 IntBuffer 时防止值被截断的解释。 例子: byte[]
我最近在 Badlogicgames.com 上阅读了一篇关于加速将信息添加到顶点缓冲区(或任何其他 intbuffer)的过程的文章,它确实提高了我的项目速度,但我不太明白 "Noticing th
我上周开始使用 OpenGL 3.3+,在尝试让索引绘图工作时遇到了这个问题。现在,我只是尝试使用 IBO 绘制一个三角形。 索引缓冲区和indexHandle: int[] tIndices = {
我是一名优秀的程序员,十分优秀!