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

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

1
最新のシャドウレンダリングテクニック?
シャドウレンダリングの観点から見た最新技術とは何ですか?私のターゲットは、OpenGL 3.2です。それが重要な場合、遅延レンダリングパイプラインを使用します。 シャドウレンダリングを検討してから何年も経ちましたが、当時はステンシルからさまざまなシャドウマッピング手法まで、数多くの手法が利用可能でした。当時、レンダリングシャドウには、CPUによって制御される個別のレンダリングパスが必要でした。しかし、最近、シャドウを含めてシーンが完全にGPUでレンダリングされるデモを見ました。それがどのように達成されたのか、あるいは(技術デモを超えて)それを行うのが妥当なことであるかどうかはわかりません。 インターネット上の古い情報が大量にあることを考えると、最近人々がどのような方法を使用しているか、そしてどのくらいGPUにプッシュできるかを知りたいと思います(私のOpenGLバージョンがサポートしていると仮定して)。
16 opengl  shadows 

2
ベアOpenGLは、小規模開発者にフレームワーク/エンジンに対してどのような利点を提供しますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私は、インディー開発者がフレームワークとエンジンから離れ、ベアOpenGLを使用するか、SDL / SFML2と組み合わせて使用​​する傾向にあることに気付きました。インディー開発者として、低レベルのOpenGLが個別のエンジンまたはフレームワークで提供できるものがわかりません。 ほとんどのきちんとしたエンジンとフレームワークは、必要な機能を提供し、邪魔をしません。また、OpenGLを直接処理するオプションを開く場合があります。クロスプラットフォームをコンパイルする機能を提供するものさえあります! 私はボンネットの下で何が起こっているかを学ぶという願望を理解していますが、OpenGLがエンジンやフレームワークを介してインディー開発者に提供するかもしれない利点を見ることができません。 OpenGLを使用してゼロからゲームを構築する背後にある理由を説明できますか?
16 opengl  c++ 

1
OpenGL:ディスプレイとglOrtho / glViewportのサイズ変更
私はいくつかのソースからこの質問を調査しましたが、「はい、それは正しい思考です」または「いいえ、ここでそれが行われた方法です」という確固たる答えをまだ見つけていません。 OpenGLレンダリングで解像度の独立性を確保しようとしています。私がそれについて行くべきだと思う方法は、glOrtho私が世界座標にしたいものを使って投影を作成することです。たとえば、glOrtho(-50.0, 50.0, -50.0, 50.0, 1.0, -1.0)。次に、ビューポートを画面解像度、つまり-に設定しglViewport(0, 0, 800, 600)ます。最後に、ウィンドウのサイズが変更されるたびに、glViewport更新された画面解像度でを呼び出します。これにより、フィギュアが拡大縮小されます。 これは、モデルが異なる解像度で同じ割合の画面スペースを取ることを保証する正しい方法ですか?解像度と同じ投影法を使用する必要がありますか?glOrtho他の人がウィンドウの解像度を使用するべきであると言っているのに対して、異なる必要があると答えた人もいました。 考え?

1
レイヤードアルファクワッドを使用したグラウンドフォグの適合性
レイヤードアプローチでは、地面に平行に配置された一連の大規模なアルファテクスチャクワッドを使用して、介在するすべての地形ジオメトリを交差させ、霧の中にいるときに地面の霧を非常に効果的に上から見下ろし、やや効果を下げます地平線に向かっています(下の画像を参照)。 代わりに、主にシェーダーベースのアプローチは、代わりに、グラウンドフォグ基質へのビュー距離の関数として密度を計算し、それに基づいてフラグメント値を出力します。 各アプローチを自分でパフォーマンステストする必要はありませんが、最初に、レイヤードアルファテクスチャアプローチがどのようなパフォーマンスに影響するかについて、他の人の経験(推測ではありません!)を聞きたいです。私は特に、頻繁に引用されるオーバードローの影響のためにお願いします(平均的なデスクトップシステムがどの程度充填率を制限しているかはわかりません)。このアプローチを使用するゲーム、特に古いゲームのリストは非常に便利です。これがDX9 / OpenGL2以前のハードウェアで実行可能であれば、私にとってはうまくいく可能性があります。 1つの大きな問題は、この種の効果に関するものです。 (画像クレジットはlume.comのLumeに送られます) 垂直霧のグラデーションが連続的/滑らかであることに注意してください。OTOHは、テクスチャ付きのクワッドレイヤーを使用して、レイヤーをウォークスルーするときにレイヤーが非常に明白になるとのみ想定できます。これは、フォグプレーンがフレームごとにプレーヤーに対面するように配置されている場所とは対照的です。
16 opengl  3d  textures  shaders 

2
OpenGL:VBOまたはglBegin()+ glEnd()?
私は最近、オリジナルのOGLレッドブックを渡した人からチュートリアルサイトへのこのリンクを与えられました。3番目のヘッダーは、典型的なレンダリングメソッドとしてglBegin()とglEnd()を忘れるようにはっきりと述べています。Redbookの方法で学びましたが、VBOにはいくつかの利点があります。これは本当に進むべき方法ですか?その場合、レンダーコードと後続のシェーダーをVBOと後続のデータ型に簡単に変換する方法はありますか?
16 opengl  graphics  glsl  vbo 

4
固定機能とシェーダー:初心者向け?
現在、私は大学でコンピューターサイエンスを学んでいます。小さなゲームを作成するために、ある時点で既存のエンジンを利用することを計画していますが、今の私の目標は、基礎、つまり3Dプログラミングを学ぶことです。私はすでにDirectXとOpenGLの選択に関するいくつかの研究を行ってきましたが、それから生まれた一般的な感情は、トレーニングホイールプラットフォームとしてOpenGLまたはDirectXを選択するかどうか、多くの知識が他のプラットフォームに移転可能であるということでした。したがって、OpenGLはより多くのシステムでサポートされているため(おそらく、学習対象を選択する愚かな理由)、OpenGLを最初に学習することにしました。 OpenGLを習得するというこの決定を行った後、私はさらに調査を行い、これまで何らかの形で気づかなかった二分法、つまり固定機能OpenGLと最新のプログラマブルシェーダーベースのOpenGLを発見しました。最初は、シェーダーベースのOpenGLを学ぶことを選択するのは当然の選択だと思ったのは、それが今日の業界で最も一般的に使用されているからです。しかし、その後、ここにあるJason L. McKessonによる非常に人気のあるLearning Modern 3D Graphics Programmingに出会いました:http : //www.arcsynthesis.org/gltut/ 私は入門書を読み、「この本について」セクションで、著者は次のように述べています。 「まず、このアプローチで学んだことの多くは、ユーザーがプログラマビリティで解決しなければならないグラフィックの問題に遭遇した場合、必然的に放棄されなければなりません。 同時に、次のように述べることにより、固定機能が初心者にとってより簡単で迅速な学習曲線を提供するというケースも作ります。 「一般的に、固定機能パイプラインを使用して新人グラフィックプログラマーに教えるのが最も簡単であると考えられています。」 当然、どのパラダイムを学ぶべきかについて私が対立する理由を見ることができます:固定機能の方法の学習(そしてその後の学習)に多くの時間を費やしますか、それともシェーダーから始めることを選択しますか?私の主な関心事は、現代のプログラマブルシェーダーでは、プログラマーが固定機能パイプラインを既に理解していることをどういうわけか必要とすることですが、私はそうではありません。 TL; DR =意欲的なゲームグラフィックプログラマーとして、固定機能または最新のシェーダーベースのプログラミングを通じて3Dプログラミングを学ぶことは私の一番の関心事ですか?

2
どのOpenGLバージョンを学習または使用しますか?
だから、私はOpenGLが初めてです...ゲームプログラミングの一般的な知識はありますが、実際的な経験はほとんどありません。 私はさまざまな記事や本を調べてOpenGLに飛び込もうとしましたが、さまざまなバージョンと、物事を混乱させる古い方法と新しい方法を見つけました。 私の最初の質問は、OpenGLの各バージョンを実行できるゲーマーの割合に関する数値を誰でも知っているかどうかです。市場シェアはどのようなものですか?2.x、3.x、4.x ... Half Life 2の要件を調べたのは、ValveがMacで実行するためにOpenGLで更新したことを知っているためです。NvidiaのWebサイトで8800 GTを見て、OpenGL 2.1のサポートをリストしました。4.xがすでにあるので、これはおそらく間違っているかもしれません。8800GTのドライバーを検索したところ、4.2をサポートしていると書かれています!少し矛盾があります、笑。 また、XPが特定のバージョンまでしかサポートしていない、OS Xが3.2のみ、またはその他のすべての種類をサポートしているなどの記事も読みました。全体として、さまざまなバージョンに対するサポートの量と、学習/使用するバージョンについて混乱しています。 学習リソースも探しています。これまでの私の検索結果は、OpenGL SuperBibleを示しています。第4版はAmazonで素晴らしいレビューがありますが、2.1を教えています。第5版は3.3を教えていますが、第4版の方が優れていること、第5版が新しい機能などを適切に教えていないことを言及しているレビューがいくつかありますか?基本的に、学習教材内でも矛盾が見られ、どこから始めればよいかさえわかりません。 私が理解していることから、3.xはまったく新しい方法を開始し、「glBegin()、glEnd()などの非推奨の機能から遠ざけたい」というさまざまな記事やレビューを読んでいますが、私が見たチュートリアルでは、この方法を使用しています。基本的に、新しいやり方はもっと複雑であるが、古いやり方は悪いと言っている人々を見てきました>。> 個人的には、前もって学ぶべきことがたくさんあることは知っていますが、テッセレーションに興味があります。私はそれが4.xにしかないと理解している限り、 [ところで、私のデスクトップは4.2をサポートしています]

5
ほとんどのチュートリアルが古くなったときにOpenGLで開始する[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 このような質問はすでにたくさんあると思いますが、OpenGLライブラリの絶え間ない更新はそれらをすべて捨て去り、1、2か月後には、ここでの答えは再び役に立たなくなります。 C ++を使用してOpenGLでプログラミングを開始する準備ができました。動作するコンパイラがあります(DevCpp。VC++に切り替えるように頼まないでください。理由を聞かないでください)。現在、OpenGLを使用したプログラミング方法についての堅実なチュートリアルを探しています。私のアシスタントは、NeHe Productionsが提供するチュートリアルを見つけましたが、私が知るようになったとき、それはまさしく時代遅れです!(ただし、OpenGLキャンバスをサポートする基本的なウィンドウをまとめました) それから私はオンラインに行き、どうやらfreeglutを使っているOpenGL SuperBibleを見つけましたか?しかし、私が知りたいのは、SuperBible 5th editionがもう最新のものであるかどうかです。私が見つけたfreeglutへの提案は、最新バージョンは2.6.0でしたが、現在は2.8.0であると言いました! OpenGL SuperBibleは今でも良い、そしてかなり最新のスタート地点ですか? OpenGLを学ぶのに最適な場所はありますか? DevCppインクルードディレクトリ(GLにあるかもしれません)に単にfreeglutを保存することは許可されていますか、それとも重要な手順はありますか 私はまだ始まったばかりなので、私が尋ねるとは思わなかったコメントや提案はありますか? @dretaは私のためにいくつかのことを解決したので、今、私は何を尋ねるべきかについてのより良いアイデアを持っています: OpenGLに直接アクセスする代わりに、ラッパーライブラリを使用してOpenGLから始めたいと思います。初心者にとっては、プログラミングや良い結果を得るのは簡単だと思いますが、まだすべての汚れた詳細を理解する必要はありません(@stepheltonが述べたように)。 問題は、サポートされなくなった関数への未定義の参照がないライブラリが見つからないことです。Freeglutは動作可能に聞こえますが、それでもGLUを使用しています。誰も私ができることを知っていますか?また、最初のSuperBibleのソースをコンパイルしようとしましたが、GLAPIがタイプとして定義されていないため、GLUライブラリで発生したエラーが発生しました。 SuperBibleを使用したいのですが、これを修正する方法がわかりません。
16 c++  opengl 

2
GLSLシェーダー効果:モーションブラーの方法
私は完全な2D環境を持ち、スプライトは風景、キャラクターなどとして回ります。 より最新の外観にするために、カメラをすばやく動かすときの最新のFPSゲーム(Crysis)ブラーに似たモーションブラーエフェクトを実装します。 サイドスクローラーでは、カメラが動いているときに高速で移動するように見えるように、このわずかなぼかしが望ましい効果になります。誰かがこれを行う上でいくつかのヒントをくれるなら、私はピクセルシェーダーであると思います、私は感謝するでしょう。

2
遅延シェーディングレンダラーのジオメトリパスの一般的なレンダリング最適化手法は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 OpenGL 3とC ++(およびウィンドウ管理用のglfw)を使用してゲームエンジンを開発しています。私はこれまでに進めてきましたが、サウンドエンティティと最適化以外のほとんどのことは完了しています。エンジンは遅延シェーディングを使用しているため、遅延シェーディング自体は平均的なGPUにとって疲れるプロセスなので、レンダリングプロセスを可能な限り最適化したいと思います。 現在のシステムは、レンダラーと現在のワールドを含むシーンで構成され、ワー​​ルドはエンティティとライティングエンティティを別々に保持しstd::vectorsます。 そのため、基本的にSceneが呼び出されるたびに->render()、Rendererを呼び出し、ワールドをパラメーターとして渡し、ワールドからエンティティイテレーターを取得し、FBOにそれらを描画してから、2番目のパスのライティングエンティティを通過します。そして、これは十分ではないと思います。 現在のアルゴリズムは、エンティティが画面スペースにない場合でもすべてを繰り返し処理します。現在のレンダリングアルゴリズムを最適化して、可視オブジェクトに対してのみAPI関数を呼び出す方法を考えています。そのようなレンダラーを最適化する一般的な手法は何ですか?

1
GLEWとは何ですか?
初心者向けの説明を探しています。公式ウェブサイトの説明は短すぎて、答えよりも多くの質問に私を導きます: GLEWとは? GLEW開発者のページによると: OpenGL Extension Wrangler Library(GLEW)は、クロスプラットフォームのオープンソースC / C ++ 拡張ローディングライブラリです。GLEWは、ターゲットプラットフォームでサポートされているOpenGL拡張機能を決定するための効率的なランタイムメカニズムを提供します。 しかし、拡張機能ロードライブラリとは何ですか? OpenGLのウィキは言う OpenGLロードライブラリは、実行時、コア、および拡張機能でOpenGL関数へのポインタをロードするライブラリです。 OpenGL関数へのポインターを読み込むとはどういう意味ですか? 拡張機能とは何ですか? 「コアおよび拡張機能」とはどういう意味ですか?
15 opengl  glew 

3
ぼやけることなくOpenGLテクスチャを拡大縮小するにはどうすればよいですか?
LWJGLを介してOpenGLを使用しています。 16x16で16x16テクスチャのクワッドレンダリングがあります。スケール量を変更すると、クワッドは大きくなり、大きくなるにつれてぼやけます。 Minecraftのように、ぼやけることなく拡大縮小する方法を教えてください。 RenderableEntityオブジェクト内のコードは次のとおりです。 public void render(){ Color.white.bind(); this.spriteSheet.bind(); GL11.glBegin(GL11.GL_QUADS); GL11.glTexCoord2f(0,0); GL11.glVertex2f(this.x, this.y); GL11.glTexCoord2f(1,0); GL11.glVertex2f(getDrawingWidth(), this.y); GL11.glTexCoord2f(1,1); GL11.glVertex2f(getDrawingWidth(), getDrawingHeight()); GL11.glTexCoord2f(0,1); GL11.glVertex2f(this.x, getDrawingHeight()); GL11.glEnd(); } そして、ここに私のゲームクラスの私のinitGLメソッドからのコードがあります GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glClearColor(0.46f,0.46f,0.90f,1.0f); GL11.glViewport(0,0,width,height); GL11.glOrtho(0,width,height,0,1,-1); そして、これが実際の描画を行うコードです public void start(){ initGL(800,600); init(); while(true){ GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); for(int i=0;i<entities.size();i++){ ((RenderableEntity)entities.get(i)).render(); } Display.update(); Display.sync(100); if(Display.isCloseRequested()){ Display.destroy(); System.exit(0); } } }
15 opengl  java  lwjgl  slick 

1
OpenGL(LWJGL)でHUD / GUIを作成する
ゲーム開発の段階で、HUDまたはGUIを作成する必要があります。私はこの部分に行ったことがないので、どのように行われたのかわかりません。画面上の固定位置に単純な四角形をレンダリングしようとしましたが、問題があります。カメラを正投影で動作させるには、次を使用します。 public void lookThrough() { GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); GL11.glOrtho(position.x, position.x + Display.getDisplayMode().getWidth()/zoom, position.y + Display.getDisplayMode().getHeight()/zoom, position.y, -1, 1); GL11.glMatrixMode(GL11.GL_MODELVIEW); } この方法を使用して画面上で何かを修正する方法がわかりませんか?これを回避する方法はありますか?ありがとう:)
15 opengl  java  gui  lwjgl 

4
2Dアイソメゲームでのリアルタイムシャドウキャスティング
私はC ++で小さな2Dアイソメトリックエンジンを書いており、リアルタイムのシャドウキャスティングを実装しようとしています。このページで説明されている簡単なアプローチに従いました。結果は次のとおりです(光は黄色のキューブと同じ位置にあります)。 結果は非常に良いですが、壁とキューブの上部に影がありません。これがどのように見えるかの例を次に示します(予想される影を緑色で描画しました)。 描画されるすべてのキューブは、XY位置に配置され、Z深度(z = x + y)の3つの2Dクワッドで単純に作成されます。OpenGLを正投影マトリックス(glOrtho)と共に使用します。影はステンシルバッファーを使用して描画されます。 このシャドウキャストの実装を完了するのに役立つリソースまたはソリューションを探しています。 どうもありがとう!

3
OpenGL ES 2.0ポイントスプライトサイズ
OpenGL ES 2.0でポイントスプライトを描画しようとしていますが、頂点シェーダーでgl_PointSizeを高い値に設定しても、すべてのポイントは1ピクセルのサイズになります。 ポイントスプライトを大きくするにはどうすればよいですか?
15 opengl  3d  android  opengl-es 

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