タグ付けされた質問 「opengl」

OpenGLは、デスクトップおよびワークステーション市場を対象とするグラフィック標準およびAPIです。専用のコンピューターハードウェアで簡単に加速できるように設計されているため、ほとんどの実装では、従来のソフトウェアレンダリングよりもパフォーマンスが大幅に向上しています。現在、OpenGLはCADソフトウェアやコンピューターゲームなどのアプリケーションに使用されています。また、クロスプラットフォームです。OpenGL標準は、OpenGL ESも制御するKhronosグループによって制御されています。

2
OpenGLでの遅延タイルシェーディング、タイルフラスタ計算
OpenGLで計算シェーダーを使用して遅延タイルシェーディングを実行しようとしていますが、各タイルの錐台を作成しようとしたときに障害が発生しています。AMDのForward +デモ(D3Dで記述)をガイドとして使用していますが、ライトがカリングされるべきではないときにカリングされているようです。 更新 更新については以下をお読みください。 これは私の(完全な)計算シェーダーです: #version 430 core #define MAX_LIGHTS 1024 #define MAX_LIGHTS_PER_TILE 40 #define WORK_GROUP_SIZE 16 struct PointLight { vec3 position; float radius; vec3 color; float intensity; }; layout (binding = 0, rgba32f) uniform writeonly image2D outTexture; layout (binding = 1, rgba32f) uniform readonly image2D normalDepth; layout (binding = …

2
GL_TEXTURE_WRAP)_(S / T)を変更するとどうなりますか?
私はいくつかの初心者向けOpenGLチュートリアルに取り組んでおり、現在のチュートリアルでは、単純な長方形にテクスチャを適用する方法を教えています。チュートリアルの状態では、テクスチャパラメータGL_TEXTURE_WRAP_SおよびGL_TEXTURE_WRAP_TをGL_CLAMP_TO_EDGEに設定するように指示されていますが、これが実際に何をするかはわかりません。それがマップされているスペースよりも大きい/小さいテクスチャがどのように処理されるかに関係していることはわかっていますが、これが実際にどのような動作を引き起こすかはわかりません。GL_CLAMP_TO_EDGEは何をしますか、そしてこれはGL_CLAMP、GL_CLAMP_TO_BORDER、GL_REPEATとどう違うのですか?どうもありがとうございました。私のようなバカに画像を提供できると助かります。
11 opengl  textures 

3
1より大きい、または0より小さいテクスチャ座標に遭遇する可能性があるのはなぜですか
私がテキストを勉強していますtexture mappingし、中preparing to drawのセッション、私が読んで: テクスチャラッピングパラメータを定義します。これにより、1.0より大きいか0.0より小さいテクスチャ座標が検出された場合の処理​​が制御されます。 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap); wrapは次のとおりです 。GL_REPEAT:0.0未満または1.0より大きい変換されたテクスチャ座標が検出された場合、このパターンが繰り返される(つまり、ラップアラウンド)ことを指定します。 GL_CLAMP:パターンが0.0または1.0の値に「固定」されることを指定します。 しかし、そのようなテクスチャ座標に遭遇する理由が何であるかについての説明はありませんか? たとえば、長方形を描いたばかりで、その上にテクスチャとして画像を適用したい場合、そのような座標に遭遇することは可能ですか?

3
ブロックベースの2Dゲームでオクルードライティングを実装するにはどうすればよいですか?
ゲーム内オブジェクトでブロックできる2Dライティングが欲しい。私のゲームにはトップダウンビューがあり、すべてのゲームオブジェクトは長方形で表されます。 10x10の世界があり、1x1にライトを配置し、そのライトの周りに壁を配置するとします。光源が壁に遮られているため、1x1で光源を見ることができるようにしたいのですが、他の場所では光源を表示できません。 光線を当てることで効果があると聞いたことがありますが、実際にはどのように機能しますか?

1
途中で色が変わる光を実現するには?
光源と色付きの窓を作ることを考えました。現在、ウィンドウは半透明です。どのようにすれば、光(たとえば、真っ白)がガラスに当たってそれを通過しても、通過したガラスと同じ色に色が変わるようにできますか? ここで説明する効果は、ウィンドウの「色」側にエリアライトを使用することで偽造できることを知っていますが、1つの白色点ライトだけが必要な場合はどうなりますか?
11 opengl  lighting  color 

2
OpenGLの原点を画面の左上に変更する場合、何を心配すればよいですか?
自己啓発のために、私はSDL / OpenGLを使用してC ++で2Dプラットフォーマーエンジンを書いています。最初はsdltutorials.comとlazyfoo.netのチュートリアルを使用して純粋なSDLから始めましたが、現在はSDLを使用してOpenGLレンダリングコンテキストを作成し、OpenGL関数でレンダリングしています(特に即時モードですが、VAO / VBOについて学習しています) )。インターフェイス、オーディオなどにのみSDLを使用しています。 SDLは、画面の左上を原点とし、正のy軸を下に向けた座標系を使用します。OpenGLで正投影を設定してこれをミラーリングするのは簡単です。 テクスチャ座標が0から1までの値を持つ右側のシステムであることを知っています-レンダリングする前にテクスチャを垂直に反転(まあ、ロードする前にファイルを反転)すると、正しくレンダリングされるテクスチャが生成されます...描画している場合は問題ありませんテクスチャ全体ですが、最終的にはタイルセットを使用し、問題を想像できます。 これを行うと、レンダリングに関して何を気にする必要がありますか? 誰かが何かアドバイスをしたり、自分でこれを行って将来の落とし穴を指摘したりできるなら、それは素晴らしいことですが、実際にはどんな考えでもありがたいです。
11 c++  opengl  2d  sdl 

3
純粋なOpenGLまたはGLSLに移行しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前に閉鎖されました。 私はグラフィックプログラミングの勉強に興味を持ったので、明らかな入り口はOpenGLを学ぶことでした。しかし、フォーラムやサイトの周りに散在する情報を集めると、3.0より前のほとんどのものが非推奨になり、「3.0以降はすべてシェーダーに関するものである」というAmazonのレビューを引用しているため、純粋なOpenGLの実装は消えています。また、私が見た本の中で、新しいバージョンをカバーしているのは優れたものだけのようですが、本の大部分が非推奨の機能を教えており、GLSLに特化した本があるためです。 これが私が最初の問題に遭遇した場所です。使用する予定のIntel統合グラフィックスを備えたノートブックを含め、一部のハードウェアはGLSLをサポートしていません。関数 GLuint vertShader = glCreateShader(GL_VERTEX_SHADER); セグメンテーション違反を引き起こし、その外観から私のドライバーはシェーダーをサポートしていません だから私の質問は、OpenGLだけでゲームを作ることの実行可能性は何ですか?シェーダー言語からのかけがえのない優れた機能はありませんか?また、シェーダーを使用してゲームを適切に実行するには、どのようなハードウェア(旧世代のi3、i5、i7、旧VGA)が必要ですか?
11 opengl  glsl 

3
OpenGLでオブジェクトを曲げるにはどうすればよいですか?
OpenGLを使用して円柱や平面などのオブジェクトを曲げることができる方法はありますか? 私はOpenGL初心者(OpenGL ES 2.0を使用しています。問題があったとしても、この場合は数学が最も重要であるため、どういうわけかバージョンに依存しません)、変換、回転、行列変換などの基本を理解しています。 。オブジェクトのジオメトリを実際に変更できる(この場合はオブジェクトを曲げて)ことができるテクニックがあるかどうか疑問に思っていましたか? リンク、チュートリアル、その他の参考資料を歓迎します!

3
3Dモデルを使用したOpenGLでのアニメーション
Blenderでモデルを作成しました。今、私は自分のc ++プログラムでその3Dモデルを読みたいと思います。モデルをさまざまなファイル形式(.obj、.3ds、COLLADAなど)にエクスポートして、C ++プログラムで読み取ることができると考えました。私はかなり長い間それを行うためにウェブを検索していて、多くのチュートリアルを見つけました。しかし、私はそれらのほとんどで問題に遭遇しました。たとえば、Neheチュートリアルでは、プログラムで使用したくないglauxを使用しています。残りのチュートリアルでは、Blenderでサポートされていないmd2を使用しています。 それで、3Dモデルのエクスポートに使用するファイル形式と、OpenGLプログラムでそれをロードする方法を誰かに教えてもらえますか?また、そのモデルをアニメーション化するにはどうすればよいですか?OpenGLを使用してc ++プログラムに読み込まれた後、トーンマッピングなどの追加の効果を追加することは可能ですか?はいの場合はどうですか? PS私はゲーム開発にLinuxを使用しています

1
マルチスレッドOpenGLアプリケーションを使用してVBOを更新し、それらを同時に使用する方法
簡単なアプリケーションがあります。2つのスレッドがあり、それぞれに独自のレンダリングコンテキストがありますが、1つのVBOを共有しています(これは機能しており、テストしました)。 ここで私が欲しいのは、1つのスレッドがVBOの前半から一部のデータをレンダリングし、2番目のスレッドがVBOの2番目の部分を更新していることです。 VBOを更新しない場合、問題なく動作しています。 しかし、更新時に奇妙な問題がいくつかあります。glMapBuffer(2番目のスレッドで)VBOを更新するために使用すると、ほとんどの場合、最初のスレッドでは何もレンダリングされませんglClear。画面全体が(呼び出し後)クリアになります。VBOからのデータにアクセスできないようです(これは理解できます。これは、バッファー全体がマップされており、何らかの方法でロックできるためです)。 をglMapBufferRange使ってみましたGL_MAP_UNSYNCHRONIZED_BIT。これは、「あなたが望むようにVBOを待たずに使用しないでください。私(プログラム)が自分で同期するからです」を意味します。また、VBOの範囲をマップして別の部分からデータをレンダリングするとき、それは待っているべきではありませんが、私と同じ問題が発生していますglMapBuffer。 誰かがこれを修正するのを手伝ったり、なぜそれが起こるのか説明したりできますか?

1
glVertexAttribPointerの正規化
glVertexAttribPointer(インデックス、サイズ、タイプ、正規化、ストライド、ポインター); type = GL_UNSIGNED_BYTEおよびnormalized = GL_TRUEを使用する場合 それはどのように正規化されますか?データは正規化のために256で除算されますか?または?これは、「1.0f」の正規化された値を持つ方法がないことを意味します。
11 opengl  3d 

2
2.5Dワールドで深度テストとテクスチャの透明度を一緒に使用するにはどうすればよいですか?
注:私はすでに答えを見つけました(この質問の後に投稿します)-私はそれを正しく行っているのか、それとももっと良い方法があるのか​​と思っていました。 OpenGL ES(JOGL)を使用して「2.5D」アイソメトリックゲームを作成しています。「2.5D」とは、世界が3Dであることを意味しますが、2Dアイソメトリックタイルを使用してレンダリングされます。 私が解決しなければならなかった元々の問題は、テクスチャを順番に(後ろから前に)レンダリングする必要があり、タイルが適切に重なり合って適切な効果が得られるようにすることでした。少し読んだ後、私はこれが「古い帽子」の2Dアプローチであることにすぐに気付きました。3Dワールドはプレーヤーによって変更できるため(これは3D空間のどこにでも表示される可能性があるため)、これを効率的に行うことは困難になりました。深度バッファーを利用するのは理にかなっているようです。これは、私がものを正しい順序でレンダリングすることについて心配する必要がなかったことを意味しました。 しかし、私は問題に直面しました。GL_DEPTH_TESTとGL_BLEND一緒に使用すると、オブジェクトがzオーダーで「ソート」される前にオブジェクトが背景とブレンドされる効果が作成されます(つまり、透明度が必要な場所で奇妙なオーバーラップが発生します)。 問題を説明する疑似コードをいくつか示します(ちなみに、私はAndroidでlibgdxを使用しています)。 create() { // ... // some other code here // ... Gdx.gl.glEnable(GL10.GL_DEPTH_TEST); Gdx.gl.glEnable(GL10.GL_BLEND); } render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); // ... // bind texture and create vertices // ... } だから問題は:透明性の重なり問題をどうやって解決するのですか?

2
OpenGLでは、深度バッファーの深度範囲をどのように発見できますか?
iOS用のGLマルチパスレンダリングアプリを実行しています。最初のパスは、深度バッファーテクスチャにレンダリングします。2番目のパスでは、深度バッファーの値を使用して、フラグメントシェーダーのアプリケーションを制御します。深度バッファーの値を有用なものに再スケーリングしたいのですが、その前に、深度バッファー値の深度値の範囲を知る必要があります。どうすればいいですか?

2
効率的な骨格アニメーション
私は、RTSゲームにスケルトンアニメーション形式(ここで指示されたとおり)を採用することを検討しています。画面上の各モデルの個々の表現は小さくなりますが、たくさんあります! MD5ファイルなどの骨格アニメーションでは、個々の頂点を任意の数のジョイントにアタッチできます。 GLSLで補間を行いながら、これをどのように効率的にサポートできますか?または、エンジンはCPUでアニメーションを実行しますか? または、エンジンは頂点ごとの最大ジョイントに任意の制限を設定し、最大数を使用しないジョイントに対してnop乗算を呼び出しますか? RTSのような設定で骨格アニメーションを使用するゲームはありますか?統合されたグラフィックカードでは、骨のルートを進む際に心配する必要がないことを証明していますか?

1
重複しないエンティティをランダムに配置するにはどうすればよいですか?
開発中のゲーム用にランダムに生成された環境を作成しています。で使用OpenGLしてコーディングしていJavaます。 (森を作成するために)私の世界にランダムに木を配置しようとしていますが、モデルを重複させたくありません(2つの木が互いに近すぎて配置されている場合に起こります)。これが私が話していることの写真です: 必要に応じてさらに多くのコードを提供できますが、ここに重要なスニペットがあります。オブジェクトをArrayListwithに保存していますList<Entity> entities = new ArrayList<Entity>();。次に、次を使用してそのリストに追加します。 Random random = new Random(); for (int i = 0; i < 500; i++) { entities.add(new Entity(tree, new Vector3f(random.nextFloat() * 800 - 400, 0, random.nextFloat() * -600), 0, random.nextFloat() * 360, 0, 3, 3, 3); } ここで、それぞれEntityは次の構文に従います。 new Entity(modelName, positionVector(x, y, z), rotX, …
11 opengl  java  objects 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.