- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 OpenGL 画一个圆。我有以下代码:
int numberOfVertices = 100;
float[][] vertices = new float[numberOfVertices][2];
private FloatBuffer vertexBuffer; // Buffer for vertex-array
public Circle(){
setUpVertices(1.0f);
// Setup vertex-array buffer. Vertices in float. A float has 4 bytes
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder()); // Use native byte order
vertexBuffer = vbb.asFloatBuffer(); // Convert byte buffer to float
//Loop through the vertices and put them in the vertexbuffer
for (int i = 0; i < numberOfVertices; i++) {
for (int j = 0; j <= 1; j++) {
System.out.println("x,y: " + vertices[i][j] + " i,j: (" + i + "," + j + ")");
vertexBuffer.put(vertices[i][j]); // Copy data into buffer
}
}
vertexBuffer.position(0); // Rewind
}
设置顶点:
private void setUpVertices(float radius) {
float theta = (float) (2 * Math.PI / (numberOfVertices - 1));
float c = (float) Math.cos(theta);
float s = (float) Math.sin(theta);
float x = radius;
float y = 0;
for (int i = 0; i < numberOfVertices; i++) {
vertices[i][0] = x;
vertices[i][1] = y;
//indices[ii] = (byte) ii;
float t = x;
x = c * x - s * y;
y = s * t + c * y;
}
}
堆栈跟踪:
03-28 08:09:08.689: E/AndroidRuntime(4776): FATAL EXCEPTION: main
03-28 08:09:08.689: E/AndroidRuntime(4776): Process: se.saxman.oj, PID: 4776
03-28 08:09:08.689: E/AndroidRuntime(4776): java.lang.RuntimeException: Unable to start activity ComponentInfo{se.saxman.oj/se.saxman.oj.Graphics.OJGLActivity}: java.nio.BufferOverflowException
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.os.Handler.dispatchMessage(Handler.java:102)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.os.Looper.loop(Looper.java:136)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-28 08:09:08.689: E/AndroidRuntime(4776): at java.lang.reflect.Method.invokeNative(Native Method)
03-28 08:09:08.689: E/AndroidRuntime(4776): at java.lang.reflect.Method.invoke(Method.java:515)
03-28 08:09:08.689: E/AndroidRuntime(4776): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-28 08:09:08.689: E/AndroidRuntime(4776): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-28 08:09:08.689: E/AndroidRuntime(4776): at dalvik.system.NativeStart.main(Native Method)
03-28 08:09:08.689: E/AndroidRuntime(4776): Caused by: java.nio.BufferOverflowException
03-28 08:09:08.689: E/AndroidRuntime(4776): at java.nio.ByteBufferAsFloatBuffer.put(ByteBufferAsFloatBuffer.java:142)
03-28 08:09:08.689: E/AndroidRuntime(4776): at se.saxman.oj.Graphics.Circle.<init>(Circle.java:26)
03-28 08:09:08.689: E/AndroidRuntime(4776): at se.saxman.oj.Graphics.OJGLRenderer.<init>(OJGLRenderer.java:33)
03-28 08:09:08.689: E/AndroidRuntime(4776): at se.saxman.oj.Graphics.OJGLActivity.onCreate(OJGLActivity.java:16)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.Activity.performCreate(Activity.java:5231)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-28 08:09:08.689: E/AndroidRuntime(4776): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
03-28 08:09:08.689: E/AndroidRuntime(4776): ... 11 more
为什么我不能将它们“全部放入”VB 中?我已经把它们打印出来了,直到 i = 50 才崩溃。删除 for( int j = 0; j <= 1; j++) 几乎可以使其工作,但似乎不正确。有谁知道问题出在哪里吗?
最佳答案
我相信您没有为顶点分配足够的空间:
//2 float coordinates per vertex and 4 bytes per float
ByteBuffer vbb = ByteBuffer.allocateDirect(numberOfVertices * 2 * 4);
关于java - 将顶点放入顶点缓冲区时出现 BufferOverFlowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22712810/
我有一堆键和值,我想通过将它们打包在一个字节数组中来发送到我们的消息队列。我将创建一个包含所有键和值的字节数组,该数组应始终小于 50K,然后发送到我们的消息队列。我有标题,然后是数据。 数据包类别:
我正在尝试使用 OpenGL 画一个圆。我有以下代码: int numberOfVertices = 100; float[][] vertices = new float[numberOfVerti
异常堆栈为 java.nio.BufferOverflowException at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:3
我们的应用程序使用 iMX6 SoM 芯片和 480x272 LVDS 显示屏。 我们还使用 Gluon 的 OpenJFX 和 Java 8u241 的嵌入式版本。 每当我们启动 jar 文件时,我
我有一个微服务应用程序,我需要使用 WebSockets 来实现其中一项功能。浏览器连接到 API 网关,然后需要将 WebSocket 请求转发到适当的微服务。为实现这一点,在 API 网关中使用了
我尝试为“audio/3gpp”创建编码器,但我的应用程序崩溃了。 我配置 MediaCodec... String mMime = "audio/3gpp"; mMediaCodec
每次我想运行我的 Android 应用程序时都会出错: [2013-11-02 13:05:36 - Dex Loader] Unable to execute dex: java.nio.Buffe
当编译一个特定的 Android 项目时,并且只在我的 Windows 机器上,我从 dex 中得到一个 java.nio.BufferOverflowException。使用 Eclipse 和使用
在编译特定的 Android 项目时,并且仅在我的 Windows 机器上,我在从 dex 中得到一个 java.nio.BufferOverflowException。使用 Eclipse 和使用
我尝试这段代码: byte arr[] = ByteBuffer.allocate(2).putInt(1).array() 但它失败并显示 BufferOverflowException 。1 是否
我正在尝试编写一个程序,该程序一次可以获取 1 位,然后在“收集”16 位后将 2 个字节写入文件。 这是基本代码: public void addBit(int bit) throws IOExce
背景 我正在尝试使用 Apache Commons 库中的 CircularFifoBuffer 类,该类包含通过 WebSocket 连接接收的最新消息的集合。但是,当我在 Linux 部署中达到
由于之前没有翻转缓冲区,我遇到了问题,但现在我无法让缓冲区使用 .put() 或 .putInt() 添加任何内容,它在第一次尝试时不断抛出 BufferOverflowException: buff
我需要将我的整数值转换为字节数组。为了不在每次调用我的 intToBytes 方法时一次又一次地创建 ByteBuffer,我定义了一个静态 ByteBuffer。 private static By
我只是为了好玩而尝试创建一个简单的程序,但我收到了 BufferOverflowException: ByteBuffer byteBuffer = ByteBuffer.allocateDirect
我正在构建一个字节数组来识别 M-Bus 主设备,并且我需要使用辅助地址来完成此操作。 To do it i need to build a byte[] with the identificatio
当我尝试使用 jobb 工具解压缩加密的 obb 文件时,出现以下错误: jobb -dump /temp/obb-output/ -o my-app-assets.obb -k secret-key
我正在学习java nio,我正在使用MappedByteBuffer和ExecutorService来异步复制文件。我的问题是 MappedByteBuffer.put() 方法抛出 java.ni
这是我的代码 Future.sequence((2 to firstPage.pages).map { count => getCommentPage(av, count) }).map(//
当我试图用 ADT 在 eclipse 中编译我的代码时,它向我显示了这个错误 [2013-12-10 17:55:51 - Android SDK] Warning when loading the
我是一名优秀的程序员,十分优秀!