問題タブ [lwjgl]

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 投票する
3 に答える
8086 参照

java - LWJGL ウィンドウをサイズ変更可能にするにはどうすればよいですか?

LWJGL ライブラリを使用する Java ゲームのウィンドウをサイズ変更可能にしようとしています。2007 年からさかのぼるいくつかのフォーラムの質問によると、これは回避策でのみ可能です。これは今日でもそうですか?そして、行く方法は何ですか?

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

java - JFrame + Canvas:glViewportを呼び出すときにNUllPointerExceptionが発生するのはなぜですか?

以下のコードでわかるように、キャンバスを含むJFrameを作成しました。私がやろうとしているのは、画面のサイズが更新されたときにopenGLコンテキストのサイズを変更することです。これは、resize()と呼ばれるイベントハンドラーで実行しているglViewport()の呼び出しと同じくらい簡単なはずです。ただし、その結果、次のようになります。

私は完全に無知です。キャンバスのサイズから返された境界は問題ないようですが、ビューポートで使用するとエラーが発生します。代わりに「glViewport(1、1、100、100)」のようなビューポート呼び出しを行った場合も同じことが起こります。これらの値はすべてウィンドウの境界内にありますが、ウィンドウのサイズを変更すると、まったく同じnullPointerExceptionsがスローされます。

私はその理由を理解するためのアイデアとエネルギーが不足しています(私は3時間グーグルを続けていますが、結果はありません)。私は何が間違っているのですか?

0 投票する
4 に答える
6684 参照

java - Java2D は LWJGL や JOGL と同じくらい高速ですか?

Java2D は舞台裏で OpenGL を使用してレンダリングを行っていると聞いたことがありますが、単純な 2D サイド スクローラーである私のプログラムに JOGL とすべてのネイティブ ライブラリを使用する価値があるかどうか疑問に思っていました。ハードウェア アクセラレーションが使用されていることを確認するために、使用しなければならない特定のテクニックと回避する必要があるシナリオがあると聞いたことがありますが、それらが何であるかはわかりません (まあ、いくつかは知っていますが、まだ行っていません)。それらの包括的なリストを見つけてください。)

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

java - コマンドラインから Slick 2D/LWJGL Java プロジェクトを開始するためのソリューションが必要です。ヘルプ?

現在、このバッチ ファイルを使用して Slick 2D アプリケーションを開始しています。

lib は LWJGL/Slick ライブラリを含むフォルダーで、myapp.jar は私のアプリケーションです。

これは簡単で効果的ですが、常にスクリプトを実行する必要がなく、実際にこれを行うために Java .jar を作成できるようにしたいと考えています。

私の質問は、このバッチ スクリプトを Java コードに「変換」するにはどうすればよいかということです。

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

eclipse - 基本的な JOGL プログラム java.lang.NoClassDefFoundError

LWJGLを使用して 2D グラフィックスを表示しようとしています。以前に openGL を使用して (C で) 作成したことがありますが、ここにあるコードを使用して、それを機能させる方法を学んでいます。.jar をインポートすると、プログラムは正常にコンパイルされますが、実行時エラーが発生します。

その行にコメントすると、別の場所で ClassLoader を取得するだけですが、まだ Display クラスを使用しています。.jar の場所などのさまざまな構成を試しましたが、これを解決するものは何もないようです。

Mac OS 10.6.6 で Eclipse Helios を使用しています。

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

java - OpenGLでの行列変換

オブジェクトを表示するためにOpenGL(LWJGLから)を使用してJavaで2D物理エンジンを構築しています。私が抱えている問題は、フレームに適用する変換行列が、それが言っているものとは異なる順序で適用されているように見えることです。

renderFrameObjects()で、回転、平行移動を適用し、オブジェクトを描画し(メッシュ座標はオブジェクトのx、yを基準にしています)、平行移動を反転し、回転を反転します。ただし、オブジェクトが(衝突時に)回転したときに得られる効果は、平行移動を適用してから回転する(つまり、半径のある点を中心に回転する)場合と似ています。さまざまな変換の組み合わせを試したので、これを理解できないようです。

どんな助けでもいただければ幸いです。

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

opengl - lwjglを使用したOpengl圧縮テクスチャ

DXT1テクスチャをByteBufferにロードしていて、Openglでロードしようとしています

glCompressedTexImage2D呼び出しで「無効な操作」というエラーが発生します。理由がわからないようです。

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

java - 透明な PNG は LWJGL で透明ではありません

背景が透明な PNG があり、LWJGL を使用して表示しようとしています。ただし、透明な背景ではなく、黒い不透明な背景で表示されます。「スペースインベーダー」の例のコードに従っています。

これが私のコードです。長くなって申し訳ありませんが、これ以上切り詰めることができず、グラフィックを表示することができませんでした。「ball.png」は、背景が透明な 256x256 の画像です。

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

java - 2D マップの作成

私はマップの作成と配列の保存に慣れていないので、このタスクで支援が得られるかどうか疑問に思っていました。私は Java で作業しており、LWJGL ライブラリを使用しています。

他のゲームをパクリしようとしているわけではないので、他のゲームとは違うものになるでしょう。基本的に、水、草、土など、さまざまな領域が必要です。最終的には山や丘、登山などを追加します。

これがどのように達成できるかを知る必要があります。可能であれば、私が言ったように初めてなので、私がどのレベルにいるのかを理解するためのコードはありません。

あなたが助けることができるなら、答えを残してください。

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

java - Opengl FBO を使用するとパフォーマンスが大幅に低下する

lwjgl (opengl) を使用して、プレイヤーから遠ざかるにつれてオブジェクトがフェードアウトする単純な 2 次元ゲームの実装に成功しました。このフェージングは​​、当初、プレーヤーから各オブジェクトの原点までの距離を計算し、これを使用してオブジェクトのアルファ/不透明度をスケーリングすることによって実装されました。

ただし、より大きなオブジェクトを使用する場合、このアプローチは少し粗すぎるように見えます。私の解決策は、オブジェクト内のすべてのピクセルにアルファ/不透明度のスケーリングを実装することでした。これは見栄えが良くなるだけでなく、計算時間を CPU から GPU に移すことにもなります。

FBO と一時的なテクスチャを使用して実装できると考えました。
FBO に描画し、特別なブレンド モードを使用して事前に計算された距離マップ (テクスチャ) でマスクすることで、効果を実現するつもりでした。アルゴリズムは次のようになります。

0) opengl を初期化して FBO をセットアップ
する 1) バックグラウンドを標準バッファにレンダリングする
2) カスタム FBO に切り替えてクリアする
3) オブジェクトを (FBO に) レンダリングする
4) 距離テクスチャを使用して FBO をマスクする
5) 標準バッファに切り替える
6) FBO を一時的にレンダリングするtexture (標準バッファーへ)
7) hud 要素をレンダリングする

ちょっとした追加情報:

  • 一時的なテクスチャは、ウィンドウ (したがって標準バッファ) と同じサイズです。
  • ステップ 4 では、特別なブレンド モードを使用して目的の効果を実現します
  • 私の一時的なテクスチャは、最小/倍率フィルターで作成されています: GL11.GL_NEAREST
  • データは以下を使用して割り当てられます: org.lwjgl.BufferUtils.createByteBuffer(4 * width * height);
  • GL11.glTexImage2D( GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, dataBuffer);
  • 私のコードには GL エラーはありません。

これにより、実際に望ましい結果が得られます。しかし、少しパフォーマンス テストを行ったところ、私の FBO アプローチではパフォーマンスが低下することがわかりました。1000 回の連続レンダリングを要求し、時間を測定してテストしました。結果は次のとおりでした。

512x512 解像度の場合:

  • 通常: ~1.7 秒
  • FBO: ~2.5 秒
  • (FBO -ステップ 6: ~1.7 秒)
  • (FBO -ステップ 4: ~1.7 秒)

解像度 1680x1050 の場合:

  • 通常: ~1.7 秒
  • FBO: ~7 秒
  • (FBO -ステップ 6: ~3.5 秒)
  • (FBO -ステップ 4: ~6.0 秒)

ご覧のとおり、これはスケールが非常に悪いです。さらに悪いことに、このタイプの 2 回目のパスを実行するつもりです。私がテストしたマシンは、対象ユーザーの観点からハイエンドであると想定されているため、このアプローチでは 60 fps をはるかに下回ると予想できます。これは、この単純なゲームにはほとんど受け入れられません.

パフォーマンスを回復するにはどうすればよいですか?