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

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

2
即時モードからVBOに切り替えるにはどうすればよいですか?
私はOpenGLを短期間使用していますが、VBOについて説明が必要です。私が理解しているように、VBOはVRAMに格納されたオブジェクトです。即時モードでは、テクスチャを適用するために、テクスチャをバインドし、頂点座標の前にテクスチャ座標を指定するだけですが、VBOではそのようには見えません。 質問1: VBOでテクスチャデータを指定できますか?データのどの部分ですか? 通常、2Dでゲームを作成するときは、すべてのオブジェクトを異なるクラスのインスタンスに格納し、描画ルーチンが起動したら、画面上にあるオブジェクトを描画します。3D環境では、画面上にオブジェクトを描画するだけでは少し難しくなりますが、いくつかの数学ではそれが可能であると確信しています。 質問2:どのオブジェクトをレンダリングする必要があるかがわかったら、それらの対応するオブジェクトに「適用」リクエストを送信し、それらを自分自身に適用させるのは許容できるほど速くなりますか?それとももっと良い方法がありますか? 質問3:完全に動的なマップがあり、オブジェクトがそれほど頻繁に変更されない場合、とのパフォーマンスの違いに関するガイドラインは GL_STATIC_DRAWありGL_DYNAMIC_DRAWますか? 最後の質問:頂点リストの使用を検討すべきですか?または、VBOはより良いオプションですか?
7 opengl  c++  vbo 

2
LibRocketをSDLおよびOpenGLと統合する
私は現在ゲームプロジェクトに携わっており、メニューやその他のGUIを追加したいところまで到達しましたが、独自のシステムの開発に費やした時間は少し時間がかかる可能性があり、これはその一部です時間を無駄にしたくないシステムの。 したがって、GUIchan、CEGUI、最近のLibRocketなど、非常に柔軟で便利なUIライブラリについて読んでいます。私の質問は、LibrocketをC ++のSDL / OpenGLで開発されたプロジェクトと統合できるかどうかです。そのような情報を見つけることができないため、その情報がどこにあるかを知っている場合。
7 c++  opengl  sdl 

2
最新のOpenGLでレンダリングするためにデバッグプリミティブをバッチ処理する必要がありますか?
最近、いくつかの古いレンダリングデモを最新のOpenGLに移植し始めました。三角形、立方体、球などのデバッグオブジェクトをレンダリングするために、即時モードglBegin()、glEnd()などを使用する古いコードにデバッグ描画クラスがありました。 もともと私はこれらの関数のコードを、VAOとVBO(位置と色)を生成し、バインドし、頂点データを割り当て、レンダリングし、VBOとVAOを無効にして削除するコードに置き換えました。これに問題はありますか? 私はクラスを変更して、描画プリミティブ呼び出しを取得するたびにVAOとVBOを生成し、頂点データを割り当てますが、他のすべてのレンダリングが完了するまで実際にはレンダリングを行わないように考えています。次に、一度に保存されたすべてのデバッグプリムをレンダリングします。 私はこれを行う方法のどちらの利点があるのか​​わからず、人々が何を考えているのかと思っていました。
7 opengl 

1
GLSL-#330から#130へのシェーダーの書き換え
私は最近、ジオメトリシェーダーを使用してポイントをテクスチャ付きの三角形/カリングに変換するゲーム(LD21)を作成しました。#330のサポートが広く普及している印象を受けたので、#330シェーダーのみを作成しましたが、それほど古いハードウェアの多くは#130のみをサポートしているようです(GLViewによると)。 今、私は#330のコア機能に慣れているだけなので、シェーダーを#130に書き換えるのに苦労しています。フラグメントシェーダーを書き換えるのは非常に簡単でしたが、頂点シェーダーとジオメトリシェーダーを#150まで下げることができました。 それで、シェーダーを書き換えることは可能ですか、それとも私のレンダリングエンジンで多くの変更が必要になるでしょうか? ジオメトリシェーダー #version 150 layout(points) in; layout(triangle_strip, max_vertices = 4) out; uniform mat4 oMatrix; in VertexData { vec4 position; vec4 texcoord; vec4 size; } vert; out vec2 gTexCoord; void main() { if(vert.position.x>-4f && vert.position.x<4f && vert.position.y>-2f && vert.position.y<2f) { gTexCoord=vec2(vert.texcoord.z,vert.texcoord.y); gl_Position = vert.position + vec4(vert.size.x,vert.size.y,0,0); EmitVertex(); gTexCoord=vec2(vert.texcoord.x,vert.texcoord.y); gl_Position …
7 opengl  glsl 

1
パーティクルシステムはどのように機能しますか?
ゲームにパーティクルシステムを実装したいのですが、パーティクルシステムをプログラミングしたことがなく、どこから始めればよいかわかりません。 GL_POINTテクスチャを使わずに、ブロックを打ったときにTerrariaやMinecraftなどのさまざまな場所にさまざまなサイズのピクセル(s)を表示したいだけです。ほんの簡単な例です。 このためのGoogle検索結果は非常に複雑になる傾向があるか、概念を説明しないか、OOPなしでは読みにくいCで書かれています… JavaとOpenGLを使用しています。

2
インターフェイスにHTMLを使用していますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前休業。 私が取り組んでいるゲームでは、グラフィックにopengl / sfmlを使用しています。現在インターフェイスに取り組んでおり、適切なオフセットや配置などをすべて決定するのは面倒なことです。それを構成可能にするために、解析する一連のxmlファイルを解析して、プログラムにどの画像を使用するか、どこにstcを配置するかを指示することになるでしょう。インターフェース用。 とにかくそうする必要があるので、htmlレンダラーをアプリに埋め込み、openglで描画されたグラフィックスの上に表示できるかどうか知りたいと思いました。そうすれば、理論的にはHTMLページを使用してインターフェイスを設計できます もし可能なら、それはどれほど難しいでしょうか、それは良い考えですか?これをすでに行うプロジェクトはありますか? ありがとう
7 c++  opengl  interface 

2
完全なアプリケーションを開発するときに、glTools / glutを使用すべきではないのはなぜですか?
私はOpenGLの使用方法をOpenGL SuperBible、Fifth Editionを使用して少し前から学び始めました。そして、この本はOpenGLの使用方法を実際には教えていないが、代わりに使用方法を教えているという事実について人々が議論しましたそれに関連する2つのラッパーライブラリ、glutとglTools。 また、過剰なプロジェクトを本格的なプロジェクトに使用してはならないことも聞かされましたが、正当な理由はありませんでした。 私の質問は、なぜ、そしていつ私はglTools / glutライブラリーを使用すべきでないのか、そして代わりに何を使用すべきなのか、です。
7 opengl  tools  glut 

2
OpenGL 2以降と3以降:2Dグラフィックの主な違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 OpenGL 3.0の前後のOpenGLコンテキストはかなり異なります。これまでのところ、私はどちらにしても実際にはどちらか一方のバッファでのみ作業してきましたが、最も顕著な違いはイミディエイトモードがないことです。 イミディエイトモードの考慮事項をまとめて捨てる場合、特に2Dグラフィックエンジンで低レベルの2次元操作をコーディングする場合に注意すべき重要な違いは何ですか?

2
一部のコンピューターでOpenGLがない、または遅い原因は何ですか?それを修正する方法は?
JavaとJOGLを使用して、OpenGL拡張2Dグラフィックスを作成しています。私が使用するグラフィックス操作は特別なものではなく、ほとんどすべての最近のグラフィックスカードでサポートされているはずです。たとえば、私のゲームはネットブック上でうまく動作します。 ほとんどのコンピューターでゲームが実行されることを期待していました。自分のコンピュータでは問題なく動作します。ただし、一部のコンピューターではパフォーマンスが非常に遅いことがわかりました(明らかにソフトウェアフォールバックで、1秒あたり約2フレームです)。そのようなコンピューターの1つでLWJGLアプリを実行しました。それはまったく実行されません(org.lwjgl.LWJGLExceptionのようなものを報告します:ピクセル形式は加速されていません。これについて不平を言っているさまざまなフォーラムスレッドが見つかることがありますが、ドライバーの問題であるという提案以外は明らかな解決策はありません)。他のOpenGLソフトウェアも機能していないようです。まったく同じグラフィック効果を備えた私のFlashバージョンのゲームは、同じコンピューターでフルスクリーンでかなりうまく機能することもわかりました。問題のコンピューターには最近のATIカードがありますが、残念ながらドライバーマネージャーにアクセスできません。 問題はかなり広まっているようです。OpenGLがほとんどのコンピューターにあるグラフィック機能へのアクセスを常に提供するとは限らないのは非常に残念です。これは、私がどんなコンピューターでも走ることを期待しているカジュアルな2Dゲームにとって魅力的ではありません。 あなたはこの問題に遭遇し、なんとかそれを修正できましたか?私の知る限り、NVidiaとATIの両方が標準のドライバーセットの一部としてOpenGLを提供していますが、いくつかの例外があるのではないでしょうか?この問題はOpenGLをサポートしていないサードパーティのドライバーが原因で発生しますか?より良いドライバーをインストールすることで問題を解決できますか?OpenGLドライバーがない他のグラフィックカードはいくつありますか? 編集:最後に、OpenGLはWindowsマシンで十分にサポートされていないと結論づけることができます。Microsoftは、たとえば一部のWindowsドライバーバンドルでOpenGLドライバーを意図的に除外するなどして、プラットフォームから離脱するために最善を尽くしているようです。ベンダードライバーを入手すれば、OpenGLを入手できます。Windowsがダウンロードする標準ドライバーを入手しますが、入手しません。これは他の人たちにもトラブルの終わりを引き起こしていません。たとえば、WebGLを実装するために、Webブラウザーは、DirectX用のOpenGL ESエミュレーターであるAngleを使用します。したがって、本当に必要なのは、完全なOpenGLの場合のみ、Angleのようなものです。
7 opengl  lwjgl  jogl 

4
C ++のWavefront * .objローダー
OpenGL(SDL経由)とC ++(Visual Studios 2010 Professional経由)を使用してゲームを作成しています。ゲーム中は3Dキャラクターアニメーションを使用します。すべての3Dモデル(地形を除く)にwavefront * .objファイルを使用したいと思います。キャラクターは、250〜500フレーム(歩行、ランニング、全力疾走、ジャンプ、しゃがみ、這うなど)で、滑らかな動き(リアル)を持っている必要があります。md2またはmd3を使用したいのですが、使用する3Dモデリング/アニメーションツール(Blender 3D 2.57)はどちらもサポートしていません。ゲームはWindowsでのみ実行されます。 私が必要としているのは、アニメーションをサポートする小さくてパワフルな* .objローダーとパーサーです。C ++で記述され、SDLで使用できる必要があります。 ありがとう Blenderがエクスポートできるすべてのファイル形式を確認した後...デフォルトのキューブをエクスポートすると、最小のファイル形式が生成されるため、3DSを使用することにしました。3DSを推奨してくれて@Danielに感謝!
7 c++  opengl  animation  sdl 

2
Irrlichtでマルチサンプリングを有効にしますか?
Irrlichtを使用する小さなゲームに取り組んでいます。私はIrrlichtにかなり慣れていないので、どうすればマルチサンプリングを有効にできるのかと思っていました。デバイスドライバーは次のようにEDT_OPENGL開始されます。 IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(800, 700), 16, NO); マルチサンプリングを有効にするにはどうすればよいですか?

1
OpenGLの透視投影行列を理解する
Open GL(OpenGL ES 2.0を含む)での透視投影行列の設定には、次の一般的な形式があります。 glm::mat4 perspective(float fovy, float aspect, float zNear, float zFar); 最後の2つのパラメータに注意してください。1つ目は、カメラに近い平面であるzNear平面を指定します。2つ目は、カメラから遠いzFar平面を指定します。 OpenGLでは、さらに遠い、つまり「画面の奥深く」にあるものは、負のZ軸を持っていることはよく知られています。(OpenGL SuperBibleやsimmilar などの信頼できるソースから取得した)設定された透視投影行列のすべてのOpenGLの例が、透視投影関数の上記の2つのパラメーター(zNear、zFar)が交換されているように見えるのはなぜですか? この例は、GLM(OpenGL Math)webisteからの抜粋です。 glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); zNearパラメータはzFarパラメータよりも実際にはカメラから遠いことがわかります。これは、カメラ/ビューアに100ポイント近い距離です。 あなたは提供することができます説明が理解しやすい、してください?私はこれが1つだけではなく、zFarをzNearよりも高い正の値として渡すすべての例です。ありがとう。 私の例: 私のコードでは、設定すると: glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 1000.0f, -500.0f); 私の錐台はz正方向に1000ポイント、z負方向に500ポイントと想定しています。 このように設定すると、少なくとも一部のオブジェクトが表示されますが、完璧ではありません。何らかの理由で、負のz座標に配置されたオブジェクトのみが表示されます。 これは、透視投影関数についての私の誤った理解に関連している可能性があります。

2
プレーヤーの座標を追跡するためにフォグをどのように設定しますか?
プレイヤーの座標にフォグを設定することが可能かどうか(プレイヤーの周りにフォグがあり、それをよりサードパーソンにすることができるか)疑問に思う主な理由は、プレイヤーの右上隅に向かっているためです。スクリーン ここに私があなたに何をしているのかのガイドを与えることができるいくつかのコードがあります: glEnable(GL_FOG) GLfloat FogColor[] = {0.8,0.8,0.8,1.0}; glFogfv(GL_FOG_COLOR,FogColor); glFogi(GL_FOG_MODE,GL_LINEAR); glFogf(GL_FOG_START,30); glFogf(GL_FOG_END,); glHint(GL_FOG_HINT,GL_NICEST); そして私は霧が言ったような位置でプレイヤーを追跡したいです posX,posY,posZ 誰かがこれを非常に役立ついくつかのサンプルコードに変えることができるなら、ありがとう これが不可能な場合は、カメラの特定の位置の周囲に霧を設定するにはどうすればよいですか。たとえば、中央ではなく、カメラの右上隅に表示します。 これがゲーム画面の写真なので、私が話していることを確認できます。
7 opengl  c++  rendering 

3
OpenGL 2Dラスタライズサブピクセル変換
タイルベースの2Dエンジンがあり、投影マトリックスは、スケーリングが適用されていない世界の正投影ビューです。したがって、1つのピクセルテクスチャが同じサイズで画面に描画されます。 それはすべてうまく機能して見栄えが良いですが、カメラがサブピクセルの動きをするとタイル間に小さな線が現れます。何が問題を解決しないのかを事前にお知らせします。 GL_NEAREST テクスチャ補間 GL_CLAMP_TO_EDGE 問題を「修正」するのは、サブピクセル変換を行う代わりに、カメラを最も近いピクセルに固定することです。私はそれに耐えることはできますが、カメラの動きはぎくしゃくします。私が現在行っている丸めのトリックに頼らずにその問題を修正する方法はありますか?
7 opengl  2d 

2
OpenGL ES 2.0:VBOを使用していますか?
OpenGL VBO(頂点バッファーオブジェクト)は、OpenGL(私の場合はOpenGL ES 2.0)のパフォーマンスを向上させるために開発されました。ロジックは、VBOの助けを借りて、データをフレームごとにクライアントメモリからグラフィックスカードにコピーする必要がないことです。 しかし、私が見ると、ゲームシーンは絶えず変化しています。オブジェクトの位置が変化し、スケーリングと回転が変化し、アニメーション化され、爆発し、スポーンまたは消滅します。 コンピュータゲームシーンなどの非常に動的な環境で、VBOをフレームごとに構築する必要がある場合、VBO を使用する意味は何ですか。 コンピュータゲームでVBOを実際に活用する方法を理解するのを手伝っていただけませんか。より多くの頂点ベースのVBO(たとえば、1つのオブジェクトに1つ)があるか、または各描画サイクルに対して常に1つだけのVBOが存在している必要がありますか?

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