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

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

3
ノイズの多いエッジ、フラグメントシェーダーによる面間のエッジの平滑化
以下のスクリーンショットのように、六角形のジオメトリで生成された地形があります。 次にバイオームを生成しますが、ご覧のとおり、それらの境界は本当に醜く、まっすぐです。その六角形の原点を隠すには、バイオーム間の境界を滑らかにする必要があります。これは、実際の波状面を含むワイヤーフレームでの外観です。 私が目指しているのは次のようなものです: 各頂点にはバイオームタイプを保持する属性があります。2つのバイオーム間のエッジの頂点に特別な属性を追加することもできますが、これをシェーダーコードで明らかにする方法がわからないようです。明らかにノイズです。ここに含まれていますが、複数のバイオームの複数の顔と境界全体で連続させるにはどうすればよいですか? THREE.jsを使用してWebGLでレンダリングしています

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

1
OpenGL:フレームが部分的に前後にジャンプする[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 2年前休業。 私はSDLとOpenGLでプロジェクトに取り組んでいます。このゲームは、Windows、Linux、OS X、iOSでうまく動作します。ただし、Android版は特に私の電話で問題を示しています。私は別のデバイスをテストしましたが、そこでもうまく機能します。 私が直面している問題は視覚的な不具合です。これはバーストで発生します。たとえば、90フレームは問題なく、40フレームはグリッチです。グリッチ自体は説明するのが難しいですが、私は試してみます。画面が部分的に正しく更新され(携帯電話の上部から約半分まで)、部分的にちらつきます。ちらつき効果は、ある種の前後のジャンプです。ダブルバッファリングに関係していると思います。画面に表示されるのは、フレームごとに前後にジャンプするためです。画面の半分が時間的に1フレーム、次のフレームが2フレーム遅れているようです。エヒタナハの行列のように、私はあなたが言うことができると思います。チャートを下っていくときに時間が経過するチャートにプロットすると、 left half | right half (phone is in landscape) ------------------------ time 1 | 1 1 time 2 | 2 2 time 3 | 3 1 time 4 | 4 4 time 5 | 5 3 time 6 | 6 6 time 7 | …

4
インデックス描画は非インデックス描画よりも高速です
6つの頂点(2つの三角形)からなる多数のポリゴンを描画する必要があります。 テクスチャ座標、法線などがない場合、どちらのアプローチでも72バイトになります。将来的には、テクスチャ座標と法線も間違いなく必要になります。これにより、インデックスの描画で消費されるメモリが少なくなります。それほど多くはありません。 だから私の質問は:頂点の重なりが少ないVAOの場合、どちらのアプローチがより速いですか?インデックス以外の描画で消費される余分なメモリは気にせず、速度のみを気にします。 編集:明確にするために。 非索引アプローチ: float[18] vertices = { //Triangle 1 1,1,0, 1,0,0, 0,0,0, //Triangle 2 1,0,0, 0,1,0, 0,0,0, }; インデックスアプローチ: float[12] vertices = { 1,1,0, 1,0,0, 0,0,0, 0,1,0, }; int[6] indices = { //Triangle 1 0,1,2, //Triangle 2 0,3,2 };
8 opengl  rendering  vbo  vao 

1
ウォッチドッグと同様のグリッチ効果を作成する
私は現在LibGDXゲームに取り組んでいます。ユーザーが何か間違ったことをしたとき、私は画面上のすべてのグラフィックスに、ゲームWatch Dogs(以下を参照)で見られるグリッチ/歪み効果と非常によく似たジッタを与えたいと思います。 私の質問はこれです:この効果はシェーダーを書くことによりリアルタイムで達成できますか?もしそうなら、これを行う方法についてオンラインで参考文献はありますか?(私は簡単なGoogleを使っていましたが、Photoshop / After Effectsでこの効果を実現する方法を見つけることができました)。 ご協力ありがとうございました。 画面ジッター:https : //www.youtube.com/watch?v=EYkqC9uI8Nc テキストグリッチエフェクト:https : //www.youtube.com/watch?v= Wj26Wp2AH-U

2
頂点バッファスチーミングの場合、複数のglBufferSubData VS Orphaning?
私は最近OpenGLを学んでいました。ゲームでは、ゲームオブジェクトの位置を頻繁に更新する必要があり、それらは常に画面に出入りします。そのため、レンダリングでは、頂点バッファーも頻繁に更新する必要があります。 OpenGLのコンテキストでは、1つの直感的な方法は、glBufferSubDataを使用して変更されたものを更新することです。 しかし、私はまた、新しいバッファデータを作成して頂点データ全体をそれにアップロードするOrphaningと呼ばれるトリックをオンラインで読んでいます。 また、州の費用とアップロードの費用により、複数のglBufferSubDataの費用も高くなる可能性があります。 これが私の質問です、 どちらの方法が良いですか? この場合、屋台は本当に重要ですか? この場合、状態の変更とアップロードのコストは本当に重要ですか? ありがとう!

1
物理ベースのシェーディング、鏡面反射パーツと拡散パーツを組み合わせる方法は?
しばらくの間、「標準的な」フォン&ブリンシェーダーを書いた後、最近、物理ベースのシェーディングに手を出し始めました。私を大いに助けたリソースは、これらのコースノート、特にこのペーパーです。これは、ブリンを物理的にもっともらしいシェーディングにする方法を説明しています。 私はこの論文で提案されているブリンモデルを実装しました。提案されている最も重要な変更(imo)は、フレネル反射率を含めることであり、これも問題を引き起こす部分です。残念ながら、著者は拡散反射率を省略して鏡面部分のみに焦点を合わせることにしました。たとえば、ランバート拡散反射を考えると、それを「改善された」ブリンと組み合わせる方法がわからないだけです-拡散部分と鏡面部分を追加するだけではもはや正しくないように思えるからです。 一部のシェーダーでは、関与するメディアの屈折率に基づいて、範囲0〜1の浮動小数点「フレネル項」が使用されているのを見ました。シュリックの近似が毎回使用されます: float schlick( in vec3 v0, in vec3 v1, in float n1, in float n2 ) { float f0 = ( n1 - n2 ) / ( n1 + n2 ); f0 *= f0; return f0 + ( 1 - f0 ) * pow( dot( v0, v1 ), …
8 opengl  shading 

1
分散シャドウマップは適切にレンダリングしたくない
エンジンにVSM(およびESM)を実装しましたが、ネットワークで公開されている多くの例で期待した結果が得られませんでした。 シャドウマップのフィルタリングをGL_LINEARに設定しましたが、結果を通常のシャドウマップと比較すると、明らかに悪くなります。 ほとんどのチュートリアルと同じように、ポイントライトシェーダーで直接モーメントを計算するか、テクスチャから取得しましたが、結果は同じです。 コード: uniform samplerCubeShadow shadowMap; ... vec4 worldSpace=inverse(ViewMatrix)*vec4(pos,1); vec4 coord=LightViewMatrix*worldSpace; vec4 abs_coord=abs(coord); float fs_z=-max(abs_coord.x, max(abs_coord.y, abs_coord.z)); vec4 clip=LightProjectionMatrix*vec4(0.0,0.0,fs_z,1.0); float d2=(clip.z / clip.w)*0.5+0.5; // clamp to [0..1] ... float shadowTexel=texture(shadowMap,vec4(coord.xyz,d2)); // VSM (Variance Shadow Map) // get partial derivatives float dx = dFdx(d2); float dy = dFdy(d2); vec2 moments …

2
ステンシルシャドウ-ドゥーム3エンジン-精度エラー-シャドウクラック-なぜですか?
最大マップサイズに関して、Doom 3エンジンの制限をテストしています。 オブジェクトがマップの原点から遠ざかるにつれて、ステンシルシャドウの精度エラーがさらに顕著になることに気づきました。 位置:-10901 -18214 -11204 位置:-10802 -26483 -19383 位置:-10802 -34683 -27540 これらのエラーは「シャドウクラック」と呼ばれていたと思いますが、これらのアーティファクトが以前に何と呼ばれていたかはわかりません。 ほぼすべてのアーティファクトがライト/シャドウの境界に沿って表示されます-これは次のとおりです。 ステンシルシャドウを使用して、このタイプのグラフィックアーティファクトを見たことがありますか?彼らは何と呼ばれている?原因は何ですか? その他の例: これは、ここにあるバニラドゥーム3エンジンです:https : //github.com/TTimo/doom3.gpl r_useOptimizedShadows cvar(worldspawnジオメトリのシャドウボリュームを処理する)をテストしているときに、アーティファクトが消えていることに気付きました。それから私はこの関数に私の方法を働きました: R_LinkLightSurf( &vLight->globalShadows, tri, NULL, light, NULL, vLight->scissorRect, true /* FIXME? */ ); 私はこれに変更しました: R_LinkLightSurf( &vLight->globalShadows, tri, NULL, light, NULL, vLight->scissorRect, false /* FIXME? */ ); これによりアーティファクトが取り除かれますが、今度は、worldspawnジオメトリのシャドウボリューム内にいることはないと想定しています。したがって、シャドウボリュームの内部に移動すると、そのシャドウボリュームは適切にレンダリングされません。
8 opengl  shadows 

2
正投影の解像度に依存しない2Dゲームでサブピクセル値を回避する方法
2Dゲームで動くスプライトの解像度に依存しないレンダリングをしようとしています。私の計画は私の世界の固定座標系(たとえば960x540)で作業し、正投影を使用してビューポートに合わせて拡大または縮小します。レターボックス化して、さまざまなアスペクト比を処理します。 ほとんどのチュートリアルによると、私はビューフラスタムに好きな次元を自由に使用できますが、多くの場合、ビューポートでサブピクセル値を使用することになるという問題につながることがわかりました。たとえば、960 x 540の座標系の(62,62)にある頂点は、寸法800 x 450のビューポートの(51.6666667,51.6666667)に終わります。 私はそれに2種類の問題に気づきました: テクスチャサンプリングは、動いているオブジェクトの場合、頂点がピクセルの中心に関連する場所に応じて常に変化します 丸めが原因で、オブジェクトが水平または垂直に1ピクセルずつ伸びる これを回避するためのベストプラクティスは何ですか(移動速度などに関して解像度の独立性を維持しながら)?そして、これに対処するのに最適な場所はどこですか?頂点をシェーダーに渡す前、または頂点シェーダー内に?
8 opengl  2d  opengl-es2 

2
「通常の」ブレンドモードとOpenGLのトラブル
OpenGLブレンド関数を期待どおりに(または賢明な画像編集プログラムから)期待どおりに機能させるのに苦労しました。例として、次の2つの画像を使用してブレンドします(白い背景では見づらいので、色がラベル付けされます)。 合成する画像 これは私が起こると期待していることです(そしてpaint.netで何が起こるか): 期待される結果 明らかに、openglのデフォルトのブレンド関数は、次のようになります(非常に間違っています)。 glBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA) たくさんのテストの後、これは私が「良い」ブレンド関数を作成するために得ることができる最も近いものです: glBlendFuncSeparate(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA) ただし、元の予想結果を振り返ると、一部の色が本来よりも少し暗くなっていることがわかります(中央左部分)。具体的には、それらは(.5アルファのため)カラー値の半分に事前に乗算されており、これを行わない関数を作成することはできません(ほとんど見えない赤い透明部分で奇妙な混合の問題を引き起こすことなしに)。 誰かがこの問題の解決策を知っていますか?ソースであらかじめ乗算されたアルファを使用する必要がありました(ゲームで使用するすべての色をあらかじめ乗算された色に変換するか、各シェーダーに何かを書き込むために追加の作業が必要なため、これを行いたくありません)。 : glBlendFuncSeparate(GL_ONE、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA)(事前乗算なし) 明らかにそれも間違っていますが、これが実際に私がこれまでに得た唯一の正しい結果です。 glBlendFuncSeparate(GL_ONE、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA)(事前乗算された入力) 唯一の問題は、それを画面に表示するための事前乗算をどのようにして取り除くのですか?ブレンドするものごとに追加のレンダーサイクルが必要になる可能性があり、この問題には複雑すぎるように思われるので、私はまだ答えを探しています(OpenGLは非常に広く使用されているため、これについて何かを見つけることができないのは興味深いことです)他の誰かがこの問題に遭遇したと思います)。 出典: オンラインブレンド機能検査- http://www.andersriggelsen.dk/glblendfunc.php 下層イメージ- http://i.stack.imgur.com/XjLNW.png トップレイヤーイメージ- のhttp://i.stack.imgur .com / 9CN6w.png

2
ゲームはアジアのユニコードテキストのレンダリングをどのように処理しますか?
私は現在、ゲームエンジンにテキストレンダリングを実装している最中です。AngelCodeのBMfontを使用してフォントテクスチャを生成し、OpenGLで各文字のテクスチャクワッドをレンダリングすることにしました。これは、FreeFont(特にFreeMono)でサポートされているすべてのグリフをレンダリングする場合でも、日本語をレンダリングしようとするまではうまくいきました(私の選択した日本語フォントはGoogleが提供するNotoです)。 FreeMonoでサポートされているすべてのグリフを16pxでレンダリングすると、1024x1024の8ビットテクスチャが1つ生成されます。能登日本語でサポートされているものをすべて同じサイズでレンダリングすると、テクスチャの数は13倍になり、このサイズではほとんどのグリフが窮屈すぎて判読できません(日本語を読むことはできませんが、できれば、まだこのテキストを読むのに多くの問題があります)。 私の質問は2つあります。 1)ゲームやモバイルアプリは、小さな日本語のテキストをどのように処理しますか?彼らは漢字のサブセットに固執しますか、特別なフォントを使用しますか、それとも最小フォントサイズはありますか? 2)ゲームは通常、日本語、中国語、韓国語、およびその他の言語で必要とされる非常に多くのグリフをどのように処理しますか?彼らはFreeType(または類似のもの)を使用してテキストをオンザフライでレンダリングしますか? 注:私はメイリオ(私のゲームで使用するためのライセンスを持っていません)を試してみましたが、結果は16pxではるかに読みやすくなりました(まだ窮屈です)が、すべてに適合するには14のテクスチャが必要でした。

4
なぜ近くの三角形が消える傾向があるのですか?
裏面カリングを有効にしたところ、奇妙な動作に気づきました。三角形のすべての頂点がビューの外側にあり、そのうちの2つが背後にあると(私はそうです)、三角形が消えます。 それを見るには、ここにGIFがあります。 投影行列が2つの頂点の順序を逆にし、それらが私の後ろに落ちて、三角形の曲がり方を変えたのではないかと思います。 しかし、すべての頂点が見えない場合にのみ三角形が消える理由は不明です... 可能であれば、この問題を回避するにはどうすればよいですか? それが問題ならLinuxで開発します。 更新: 裏面カリングによるものではない可能性が指摘されています。無効にしたので、実際に再現できます。立方体は20×20で、垂直視野は90°です。垂直方向の見かけのサイズは、ウィンドウをほぼ埋めます。 更新2: では、コードの関連部分を投稿します。投影とビューマトリックスは、自分の関数を使用して設定されます。 void createViewMatrix( GLfloat matrix[16], const Vector3 *forward, const Vector3 *up, const Vector3 *pos ) { /* Setting up perpendicular axes */ Vector3 rright; Vector3 rup = *up; Vector3 rforward = *forward; vbonorm(&rright, &rup, &rforward); /* Orthonormalization (right is computed from …
8 opengl  3d  linux 

1
フル解像度のテクスチャを同じ解像度のウィンドウに描画するにはどうすればよいですか?
画像は1280x800、画面サイズは1280x800です。それは完全に描画する必要があります。画面サイズのクワッドを作成し、クワッドに合うようにテクスチャを設定しています。しかし、現在のところ、画面の左上隅に四角形のテクスチャが描画されています。これは、スケール外で十分な大きさではありません。 なぜ機能しないのかわかりません。描画するときにテクスチャのサイズを大きくしてみましたが、ある程度機能するようですが、描画するときに機能しないのはなぜですか。 1280x800クワッド。 フルスクリーンのクワッドを作成するにはどうすればよいですか? これが私が現在やっている方法です: これは私のOPENGLとディスプレイのセットアップコードです。 DisplayMode displayMode = null; DisplayMode[] modes = Display.getAvailableDisplayModes(); for (int i = 0; i < modes.length; i++) { if (modes[i].getWidth() == World.SCREEN_WIDTH && modes[i].getHeight() == World.SCREEN_HEIGHT && modes[i].isFullscreenCapable()) { displayMode = modes[i]; } } Display.setDisplayMode(displayMode); Display.setFullscreen(false); Display.create(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, World.SCREEN_WIDTH, World.SCREEN_HEIGHT, 0, 1, …
8 opengl  java  lwjgl  slick 

1
多数の同じオブジェクトを描画するための最も効率的な方法ですが、変換は異なります
多数(数千)の単純なメッシュ(多分...最大で50の三角形ですが、それでも非常に大きな上限)を描画したいと思います。これらはすべてまったく同じです。 単純な力ずくの方法として、今は何千もの描画呼び出しを行っています。シェーダーが必要とする変換行列を変更してから、同じオブジェクトをもう一度描画します。 もちろん、これはひどく遅いです。(私が推測しているように)ドライバーと私のPCの描画呼び出しが多すぎて効率的に処理できないためです。 それを速くするために私は何ができますか?
8 opengl 

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