問題タブ [floatbuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1788 参照

java - FloatBuffer オーバーフロー例外 java

ここにこのコードがあります:

実行しようとすると、次のエラーが発生します。

問題を解決する方法が見つからないインターネット全体を見てきました(それが何であるかもわかりません)。私の目標は float[] を float に変換することですが、これが私が知っている唯一の方法です。c++ には glLightfv がありますが、lwjgl には glLightf しかありません。これを修正するにはどうすればよいですか?

0 投票する
1 に答える
993 参照

android - read and write FloatBuffer as binary file in android

I'm playing around with OpenGL ES 2 and FloatBuffers. Actually i try to save the FloatBuffer handling the Vertices Data to a binary file. It seems to work but after reading in the floats and puting them back togehter to a FloatBuffer the object is messed up.

For saving the float data from my Buffer i use the following code:

For reading:

FloatBuffers are created this way:

Does anyone have a idea why this happens?

UPDATE: I already compared the data written and readed and they are equal. The problem is still there and this is just more confusing.

0 投票する
3 に答える
1495 参照

java - FloatBuffer[]をbyte[]に変換します

FloatBuffer配列をバイト配列に変換する方法を探していました。FloatBufferオブジェクトをbyte[]に変換する方法を見つけました: floatbufferからbyte[]に変換します

しかし、インターネットを数時間検索した後、FloatBuffer[]から変換するのに相当するものを見つけることができませんでした。

そして、逆を行うために、byte[]からFloatBuffer[]に変換するために、私はこれだけを見つけました:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(floatBufferObject);
byte [] descriptorsBytes = bos.toByteArray();

しかし、これを行うためのより簡単な方法がないのは少し奇妙に思えます。多分私は非常に明白な何かを見逃しているかもしれません、多分私はFloatBuffer配列をバイト配列に変換するのがより簡単な他のタイプに変換する必要がありますか?

0 投票する
2 に答える
268 参照

java - for¿を使用してFloatBuffer配列を作成すると、値が上書きされますか?

次のようなforループを使用してFloatBufferの配列を作成しています。

ただし、何らかの理由で、この行(*)が実行されるたびに、FloatBuffer配列( "buffer")の各行の値が変更されます。たとえば、buffer [0]に値を指定した後、buffer [0] .get(0)を出力し、buffer [1]に値を指定した後、buffer [0] .get(0)を再度出力しましたが、値が変更されました。以前のバッファ[0]、バッファ[1]のそれぞれの新しいバッファ[i]の値を処理しています...なぜこれが発生するのかわかりませんか?

0 投票する
1 に答える
190 参照

java - .put(float f ) に Float[ ] を持たせるにはどうすればよいですか?

elcipes は、私の vertBuff.put(vertices); と言っています。--- 型 FloatBuffer のこのメソッド .put(float f) は、引数 (Float[]) には適用されません。このエラーを修正するにはどうすればよいですか? vertBuff.put() を持つコードはこちら

}`

MainActivity クラスはこちら

}

0 投票する
2 に答える
1395 参照

android - Android OpenGLは動的にFloatBufferのサイズを変更しますか?

Android で OpenGL ES 2.0 レンダリング システムを構築しようとしています。すべての頂点データを配置する 1 つの FloatBuffer があります。現在、膨大な数のバイトを割り当てて、そのサイズでバッファがいっぱいになる場合はドローコールを無視します。バッファのサイズを動的に変更する方法はありますか? レンダリングのたびにバッファを解放して再割り当てしただけでは、非常に遅くなると思います。

0 投票する
1 に答える
2592 参照

android - byte[] を float[] に変換する

Android で float[] を byte[] に変換しようとしています。stackoverflow に関する他の質問と回答を見てきましたが、どれも役に立たなかったため、独自のソリューションを実装することにしました。私が試した方法は次のとおりです。

ただし、例外:

行から:

投げられ続けますが、その理由はわかりません。この例外がスローされる理由を誰かが説明してくれませんか。それは大いに役立つでしょうか?

0 投票する
1 に答える
140 参照

java - float[] を FloatBuffer クラスとして取得する

を持っていて、それを ( GLMatrixFuncのインターフェース) のfloat[]引数として入れたいと思います。glLoadMatrixf(FloatBuffer m)

どうすればfloat[]asを取得できFloatBuffer ますか?

コードは -

上記のプロンプト -The method glLoadMatrixf(FloatBuffer) in the type GL is not applicable for the arguments (float[])

0 投票する
3 に答える
5303 参照

java - float[] に格納された Floatbuffer を取得するには?

持つ -

どうすれば入手できますfloat[SIZE] か?

0 投票する
2 に答える
587 参照

java - Java OpenGL(JOGL) オブジェクト配列と FloatBuffer

Java OpenGL (JOGL) アプリケーションでのメモリ割り当てとガベージ コレクションを最小限に抑える方法を見つけようとしています。学習課題として、いくつかの C/C++/C# OpenGL プロジェクトを Java に移植しています。私が直面していることの 1 つは、Java のポインターの欠如と、アプリケーションの実行時のオブジェクトの割り当てとそれらの GC です。C/C++/C# では、参照を渡すことで追加のメモリやオブジェクトを割り当てることなく、アプリケーションを起動して簡単に実行できますが、Java では設計に互換性がないようです。

これらの設計が進化するにつれて、より高いレベルのオブジェクトが使用されています。C では、これらはベクトルと行列の構造体であり、C++/C# クラスではそうでした。これらはすべて、本質的にメモリ内のバイト配列に要約されます。次に、アプリケーション内で OpenGL 呼び出しまたはオブジェクト配列のために何らかの方法で float[] にキャストされるため、演算子のオーバーロード、加算と乗算、またはプロパティ アクセスなどのオブジェクト ベースの操作を使用できます。OpenGL を扱っている人は、おそらく私が何をしているかを知っているでしょう。このようにして、ロード時にすべてを割り当て、データを単純に渡します。

Java がいくつかのループを引き起こしました。データを前後にキャストできないように見えるため、大量のデータを作成し続け、GC が機能します。これは、リソースの消費とクリーンアップ、およびアプリケーション実行中の顕著なカクつきによって顕著になります。ジオメトリ データの VectorXf 配列に加えて FloatBuffer を作成し、その FloatBuffer を OpenGL に渡すことで、この問題の一部を軽減しました。しかし、Vector データを更新する必要がある場合は、データを float バッファーに再コピーする必要があります。これは、2 倍のデータを格納していて、floatbuffer フィルのオーバーヘッドが発生していることも意味します。

他の人がこれらの問題にどのように対処しているかを聞きたいです。組み込みの機能のために高次のオブジェクトを保持したいのですが、データを OpenGL に渡すことができます。私のデザインは単に Java と互換性がないのでしょうか? 排他的に FloatBuffers に移動する必要がありますか? オブジェクト作成のペナルティなしで、コンポーネント データを高次オブジェクトに渡すにはどうすればよいでしょうか。非常に多くの OpenGL アプリケーションが存在するため、float[] と Object[] に同じバッファを使用するか、オブジェクト データに連続したブロックを割り当てて OpenGL への参照を渡すという「魔法」があると思われます。