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

携帯電話などの組み込みデバイス用に設計されたOpenGL 3DグラフィックAPIのサブセット。

3
メッシュが非表示になっているときに/後処理メッシュのアウトラインを非表示にする方法
3Dエンジンでアクティブなアウトラインを設定する作業をしています。選択した3Dキャラクターのハイライト効果や画面の風景です。ステンシルバッファーを操作し、満足のいく結果が得られなかった後(凹面形状の問題、カメラからの距離が原因のアウトラインの厚さ、デスクトップとラップトップ間の不整合)、エッジ検出とフレームバッファーサンプリングに切り替えて、アウトラインを取得しましたかなり満足しています。 ただし、選択したメッシュが別のメッシュの背後にある場合、アウトラインを非表示にできません。これは、残りのシーンをレンダリングした後、フレームバッファーから2Dシェーダーアウトラインをレンダリングするだけなので、私のプロセスを考えると理にかなっています。 結果の2つの画面キャプチャーを以下に示します。1つ目は「良好な」アウトラインで、2つ目は、アウトラインソースをブロックするメッシュ上にアウトラインが表示される場所です。 レンダリングプロセスは次のように実行されます。1)ハイライトされたメッシュのアルファのみを描画し、フレームバッファー(framebuffer1)に黒いシルエットをキャプチャします。 2)テクスチャをframebuffer1からエッジ検出を実行する2番目のシェーダーに渡します。フレームバッファ2でエッジをキャプチャします。 3)シーン全体をレンダリングします。 4)シーンの上部にあるframebuffer2からテクスチャをレンダリングします。 私は達成する方法についていくつかのアイデアを持っているので、それらの有効性、またはより単純な、またはより良い方法についてフィードバックを得たいと思っています。 最初に、シーン全体をフレームバッファーにレンダリングし、強調表示されたメッシュの可視シルエットをアルファチャネルに格納することを考えました(強調表示されたメッシュが表示されているところはすべて白で保存されています)。次に、アルファチャネルでエッジ検出を実行し、シーンフレームバッファーをレンダリングしてから、エッジを上にレンダリングします。次のような結果になります: これを実現するために、ハイライトされたオブジェクトのレンダーパス中にのみ、定義を設定して、可視ピクセルのアルファをすべて黒くすることを考えました。 私の2番目のアイデアは、上で概説した現在のレンダリングプロセスを使用することですが、選択したメッシュのシルエットをレンダリングするときに、framebuffer1のR、G、BチャネルにもX、Y、Z座標を格納します。エッジ検出が実行され、framebuffer2に格納されますが、RGB / XYZ値をアルファのエッジからシルエットに渡します。次に、シーンをレンダリングするときに、座標がframebuffer2に格納されているエッジ内にあるかどうかをテストします。その場合は、現在のフラグメントの深度をテストして、RGBチャネルから抽出された座標(カメラ空間に変換)の前か後ろかを判断します。フラグメントが深度座標の前にある場合、フラグメントは正常にレンダリングされます。フラグメントが背後にある場合は、塗りつぶされたアウトラインカラーとしてレンダリングされます。 私はこのプロジェクトにLibGDXを使用しており、WebGLとOpenGL ESをサポートしたいので、ジオメトリシェーダーや新しいGLSL関数を使用するソリューションはありません。私の提案したアプローチについて誰かがコメントしたり、より良い提案をしたりできるとしたら、本当にありがたいです。

1
OpenGL ESは、テクスチャを使用してステンシルエフェクトを作成します
環境 これは私が働いている環境です: OpenGL ES 2.0 iPhoneシミュレーター&iPhone 4 NVIDIA GeForce GTX 680MX 2048 MBを使用するiMac 27インチ お役に立てば幸いです。 問題 Stackoverflowを含む複数のソースと複数のサイトから高低を検索していますが、機能するステンシル効果がありません。 私が持っているのはこれです: 黒い「S」のものはポリゴンではなく、背景の画像と同じ幅と高さの四角形の四角形に描かれたテクスチャです。 背景と小さな黄色の男が黒い「S」テクスチャ内にある場合にのみ表示されるステンシルエフェクトを実行しようとしています。 私のフラグメントシェーダーでは、これがあります: varying lowp vec4 destinationColor; varying lowp vec2 TexCoordOut; uniform sampler2D Texture; uniform highp float TexScale; void main() { highp vec4 color = texture2D(Texture, TexCoordOut); if(color.a == 0.0) { discard; …

2
隣接するタイルの高さが異なるタイルマップ/地形の実装
アホイ! タイルマップに関する情報、つまり、特定の種類のタイルマップの名前を探しています。 私はジェットコースターの大物や輸送の大物ゲームのシリーズで使用されている種類の実装に興味があり、ベクターフィールドの地形と高さマップの地形を調べてきましたが、それらが私が探しているものに適しているかどうかわかりません発展させる。 ほとんどの人がアイソメトリックタイルマップと呼んでいるので、適切な情報を見つけるのは大変でしたが、正射投影法を固定して3Dで何かを作成したいと考えています。タイルマップの基盤となるストレージはレンダリング方法とは関係がないことを理解していますが、古い学校のポケモン/ゼルダゲームのような2Dタイルマップを作成するつもりはありません。張り出した崖と傾斜した地形。 私は、Googleとstackoverflowでリソースを検索するための適切な用語を見つけようとしています。これは、どのパスに進むかを決定するのに役立ちます。 これまでのところ、VBOに格納され、ワイヤーフレームとしてレンダリングされた高さ/ yコンポーネントを使用せずに、基本的なタイルマップを具体化できました。これはこれまでは問題ないように見えますが、隣接するタイルに影響を与えずに1つの頂点を操作して崖やスロープを作成しようとすると問題が発生することを想定しています。 調査する必要がある特定のタイプの実装はありますか?ベクターフィールドの地形に関する情報がかなりの量を見つけたときにそれをクラックしたと思いましたが、これでも正しい結果が得られるかどうかはわかりません。 誰かが私にこれについていくつかの光を当てることができれば、助けは大歓迎です:) 更新 私が達成したいことについてさらに明確にするために画像を含めました: 傾斜(高さ)アイソメトリックタイルの作成方法から借用した画像 この画像は、生成したい地形のタイプを示していますが、「崖」やモデリングに関心のある張り出した地形タイプは含まれていません。しかし、それは私が考慮していなかった他のいくつかの質問を引き起こします。 水などの「レイヤー」(画像の左上)は、水の下に見える地面を含めるためにどのように処理されますか? 地球/泥がレンダリングされて世界が非平坦なエンティティとして表現されるように、マップの「エッジ」はどのように提供されますか? この種の地形の基礎となるストレージを使用して、丘を転がるボールや坂を横切るプレーヤーの移動速度などの物理学をモデル化できますか? 地形の各タイルは8つの頂点でモデル化でき、4つの主要な頂点が実際のタイル自体をカバーし、残りの4つの頂点は各タイルの側面/壁をモデル化するために使用されるという考えがありました。この実装で私が目にする2つの問題は、a)世界地図のサイズが基本的に2倍になることと、b)すべてのタイルに「壁」が含まれるわけではないため、一部のタイルが使用されない冗長な頂点になることです。 各タイルを変形させたり、ゲームのプレイ中に地形を変更する機能を組み込んだ地形エディターを作成したいと思います。これ自体、次のような追加の質問が発生します。VBOを使用して、オンザフライで変更しながら地形を保存およびレンダリングできますか?また、隣接するタイルに影響を与えることなく頂点を変更できますか? 自分がやりたいことをどのようにして達成するのかを明確に考えずに問題を解決するためのコードを書くのを怠っているので、複雑すぎたり分析麻痺に陥ったりしているように見えます。 繰り返しますが、私は本当にこれで正しい方向への突き出しを探しています。マップエディターとゲームプレイの両方で3Dマップが変形する特定の種類のタイルマップ/地形の実装はありますか?いわば、自分でロールする必要がありますか?私はここで車輪を再発明しようとしているわけではありませんが、何を探しているのかわからないため、リソースを見つけるのに苦労しています。 誰かが情報、リソース、またはコードのスニペットを提供できる場合は、手を汚して、現在持っているフラットワイヤーフレーム以外のものの作成を開始したいと強く思っています。 読んでくれてありがとう!

1
gl_TexCoord [0]のコンポーネントはどういう意味ですか?
違いは何ですかgl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pとはgl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z? gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zピクセル座標であると理解していますか? しかし、どういうgl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].p意味で、どこで使用する必要がありますか?

6
OpenGL ES 2.0:品質シェーダーのリポジトリ[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 高品質のOpenGL(OpenGL ES 2.0)の頂点とフラグメントシェーダーのリポジトリを提案してください。 私を探していますシェーダligting基づいて画素(のようなフォンを)とsimmilar。品質とシェーダーのパフォーマンスのどちらかを選択できるように、それらをさらに表示するとよいでしょう。

4
WebGLおよびOpenGL ESの機能がありません
私はWebGLを使い始めて、OpenGL(さらにはOpenGL ES)のエクスペリエンスを簡単に活用できることに満足しています。ただし、私の理解は次のとおりです。 OpenGL ESはOpenGLのサブセットです WebGLはOpenGL ESのサブセットです これはどちらの場合でも正しいですか?その場合、不足している機能を詳しく説明するリソースはありますか? たとえば、欠落している注目すべき機能の1つはglPushMatrixおよびglPopMatrixです。WebGLには表示されませんが、検索ではOpenGL ESマテリアルで参照されているものは見つかりません。

1
隣接するテクスチャのエッジを拾うスプライトシートテクスチャ
シンプルなスプライトシートを使用するカスタムスプライトルーチン(openGL 2.0)があります(テクスチャが横に並んでいます)。 したがって、たとえば、以下は2つの単純なテクスチャを持つテストスプライトシートです。 ここで、openGLスプライトオブジェクトを作成するときに行うことは、アトラス内のフレームの総数を指定し、描画するときに、描画するフレームを指定することです。 次に、テクスチャをどこから取得するかを決定します。 必要なフレーム数をフレームの総数で割る(左座標を取得するため) 次に、フレームの総数で1をダイビングし、その結果を上記で計算した左側の座標に追加します。 これは機能するようですが、時々問題が発生します。たとえば、以下のXを描画したいとします。 各テクスチャの間に1ピクセルの「パディング」を挿入することについて聞いたことがありますが、これがどのように機能するかを誰かが正確に説明できますか?つまり、これを行うと、テクスチャを取得するための計算が確実に破棄されます。 ピックアップしたテクスチャにパディングを単純に含めると(スプライトは空白の境界線で描画されます)、衝突の検出で問題が発生しますか?(つまり、透明部分が衝突するときに境界ボックスを使用すると、スプライトが衝突するように見えることがあります)。 誰かが説明していただければ幸いです。

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

3
OpenGLが実際に画面を更新するのにどのくらい時間がかかりますか?
キー入力に応じてさまざまなものを描画する単純なOpenGLテストアプリをCで作成しています。(Mesa 8.0.4、Mesa-EGLおよびGLFW、NVIDIA GTX650を搭載したPC上のUbuntu 12.04LTSで試した)。ドローは非常にシンプル/高速です(回転三角形タイプのもの)。私のテストコードは、フレームレートを意図的に制限するものではなく、次のようになっています。 while (true) { draw(); swap_buffers(); } 私はこれを非常に注意深く計時しており、1つのeglSwapBuffers()(またはglfwSwapBuffers、同じもの)呼び出しから次の呼び出しまでの時間は〜16.6ミリ秒であることがわかりました。eglSwapBuffers()描画されたものは非常に単純ですが、呼び出し後から次の呼び出しの直前までの時間は、それより少しだけ短くなります。スワップバッファの呼び出しにかかる時間は1ミリ秒未満です。 ただし、アプリがキーの押下に応じて描画内容を変更してから実際に画面に表示されるまでの時間は、> 150ms(約8〜9フレーム)です。これは、画面とキーボードを60 fpsでカメラで記録して測定されます。 したがって、質問: スワップバッファーの呼び出しと実際に画面に表示される呼び出しの間の描画はどこにバッファーされますか?なぜ遅れるの?アプリが常に画面の前に多くのフレームを描画しているようです。 OpenGLアプリケーションは、画面にすぐに描画するために何ができますか?(つまり、バッファリングなし、描画が完了するまでブロックするだけです。高スループットは必要ありません。低遅延が必要です) 上記の即時抽選をできるだけ早く行うためにアプリケーションは何ができますか? アプリケーションは現在、実際に画面上にあるものをどのようにして知ることができますか?(または、現在のバッファリング遅延はどのくらいの長さ/何フレームですか?)

2
IFステートメントで1つではなく2つのシェーダーを使用する
私は比較的大きなopengl ES 1.1ソースをES 2.0に移植する作業をしています。 OpenGL ES 2.0(つまり、すべてがシェーダーを使用する)では、ティーポットを3回描画したいと思います。 最初のものは、均一な色(古いglColor4f)です。 2つ目は、頂点ごとのカラーです(ティーポットにも頂点カラーの配列があります)。 3つ目は、頂点ごとのテクスチャです。 そして、おそらく4番目の1つで、頂点ごとのテクスチャと色の両方があります。そして、多分5番目のもので、法線も含まれます。 私が知る限り、実装には2つの選択肢があります。1つ目は、動作を変更するように設定されたユニフォームを使用して、上記のすべてをサポートするシェーダーを作成することです(たとえば、単一カラーユニフォームまたは頂点ごとのカラーユニフォームを使用します)。 2番目の選択肢は、状況ごとに異なるシェーダーを作成することです。一部のカスタムシェーダーの前処理では、それほど複雑ではありませんが、描画オブジェクト間でシェーダーを切り替える際のパフォーマンスコストが問題になります。私はそれがささいに小さくないことを読みました。 つまり、これを行う最善の方法は、両方を構築して測定することですが、入力を聞くのは良いことです。
9 opengl-es  glsl 

1
重いフラグメントシェーダーのパフォーマンスの最適化
次の一連のシェーダーの最適化についてサポートが必要です。 バーテックス: precision mediump float; uniform vec2 rubyTextureSize; attribute vec4 vPosition; attribute vec2 a_TexCoordinate; varying vec2 tc; void main() { gl_Position = vPosition; tc = a_TexCoordinate; } 断片: precision mediump float; /* Uniforms - rubyTexture: texture sampler - rubyTextureSize: size of the texture before rendering */ uniform sampler2D rubyTexture; uniform …

1
gluLookAtはどのように機能しますか?
私の理解から、 gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 以下と同等です。 glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); しかし、ModelViewマトリックスを出力すると、への呼び出しがglTranslatef()正しく機能していないようです。コードスニペットは次のとおりです。 #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

3
ゲームを開発するときに、iOS 3.xまたはiPhone 3Gデバイスをサポートする価値はありますか?
ゲーム開発者が古いデバイス(iPhone 3G以前)をサポートしたり、古いOS(iOS 3.x以前)をサポートしたりする価値はまだありますか?または、サポートされているOpenGL ES 2.0をiPhone 3GS以降で使用することをお勧めしますか?以前のバージョンのデバイス/オペレーティングシステムを使用しているユーザーの割合を知っていますか?
9 iphone  opengl-es  ios 

1
glBlendFuncによるCocos2Dのブレンドモード
私たちは、PhotoshopとQuartz 2Dで利用できる最も一般的な描画モードを再現しようと試みてきましたが、3つしか考え出せませんでした。 興味のある人のために、ここにあります: 乗算 = GL_DST_COLOR、GL_ONE_MINUS_SRC_ALPHA 画面 = GL_MINUS_DST_COLOR、GL_ONE 線形覆い焼き= GL_ONE、GL_ONE これらのモードやその他のモードをオンラインで試すことができます。この非常に便利なWebサイトhttp://www.andersriggelsen.dk/glblendfunc.php 私たちのOpen GLエクスペリエンスは本当に非常に制限されているため、Cocos2D内で再作成できる追加のブレンドモードを提供していただければ幸いです。 前もって感謝します! アルギリス

3
パーティクルシステムで独立した透明度を注文する
私はパーティクルシステムを作成していて、次の理由により、パーティクルを並べ替えることなく適切なアルファブレンディングを実現するためのトリックを見つけたいと思います。 各パーティクルは単一のメッシュ内のポイントスプライトであり、シーングラフ機能を使用して透明なノードを並べ替えることはできません。ただし、システムノードは適切にソートする必要があります。 パーティクルの位置は、初期速度、加速度、時間からシェーダーで計算されます。システムをソートするには、CPUでこのすべての計算を実行する必要がありますが、これは避けたいものです。 カメラの位置に対して何百ものパーティクルを並べ替え、フレームごとにGPUにアップロードすることで、静かで重い操作が可能になります。 アルファテストはGLES 2.0では十分高速であるように見え、非透過ではあるが「マスクされた」テクスチャに対しては問題なく機能します。それでも、半透明の粒子には十分ではありません。 これをどのように扱いますか?

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