問題タブ [glu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - openglは円柱の半分をレンダリングします
わかりました。openglは初めてで、コアのopenglとglutのみを使用してプールゲームを作成しています。C++で書いています。
私は円柱を描く方法を知っています:
このシリンダーを半分にできるかどうか知りたいので、曲線を使用してテーブル/ポケットの端を丸めることができます。
opengl - JOGLでのテクスチャリング二次曲面
glu Quadric(gluSphere)をテクスチャリングすることができません。テクスチャの代わりに取得するのは、テクスチャの平均的な色です。
opengl - NURBS曲線を描くときの結び目の意味は?
私はgluNurbsCurve
いくつかのコントロールポイントでいくつかの曲線を描くために使用しています。レッドブックで説明されている基本的なセットアップが正しく機能しているので、それを拡張しようとしています。
このサンプルは次のようになります。
私が疑問に思っていたのは、ノットデータの意味です。結果にどのように影響しますか?そこで実験できる他のオプションは何ですか?
何らかの理由で、これを適切に説明するチュートリアルが見つかりませんでした。
python - ヘッドレスサーバーでGLU(OpenGL)を実行できますか?
ヘッドレスのGNU/LinuxサーバーでGLUのテッセレーション関数を使用しようとしています。そのためにPyOpenGLを使用したいのですが、問題はgluNewTessの呼び出しでクラッシュすることです(セグメンテーション違反)
gdb backtraceは、それがglGetErrorにあると言っています。これにより、GLUテッセレーションにはGLコンテキストが必要だと思いますか?それとも、PyOpenGLの複雑さだけですか?
ヘッドレス(および仮想化)マシンでGLコンテキストを初期化する方法に関する情報を見つけようとしましたが、運が悪かったです。これらのトピックに関する情報をいただければ幸いです。
opengl - gluTess が最初の呼び出しで機能しないのはなぜですか?
非凸多角形を描画するために gluTess* 関数を使用しています。すべてのステップでテッセレーションをやり直すのを避けるために、結果を配列に格納し、OpenGL の頂点配列機能を使用して描画します。
私の問題は、何らかの理由で、初めて gluTess* を使用したときに、三角形の一部しか描画されないことです。gluTess* を強制的に再作成すれば、すべて問題ありません。
gluTess* を再作成するために、頂点配列を含むオブジェクトを完全に破棄して再作成することに注意してください (これにより、頂点配列オブジェクトの再計算が強制されます)。
なぜそうなるのかについて何か考えはありますか?
いくつかのランダムなアイデア:
- 最初の OpenGL 呼び出しでは、ウィンドウがまだフルサイズになっていないためでしょうか?
- 後で行うOpenGLの状態を設定する必要がありますか?最初の呼び出しではありませんか?
ありがとう。
編集:テストとして、頂点配列を作成、破棄、および再作成しました。それは問題を解決します。つまり、OpenGL の状態を変更しないと、gluTess* への最初の呼び出しでポリゴンを正しくテッセレートできません。しかし、2つ目は成功します。誰かが前にそれに気づきましたか?
編集(2):コードは次のとおりです:
2 番目の呼び出しが成功すると、beginVA、endVA、および vertexVA が正常に機能すると思われます (前述のとおり、2 番目の呼び出しは、主に頂点配列を保持するデータ構造 VA を破棄することによって行われます)。
編集 (3) : 不足しているコードは次のとおりです。
編集 (4) : 結局、エラーは別の場所にありました。私は疲れていたに違いありません。std::vector を使用して結合関数の結果を格納しました。後でうまくいった理由はわかりませんが、最初はうまくいかなかったのは当然のことでした。申し訳ありませんが、これで本件はクローズさせていただきます。
opengl - GLUtessellator に GL_TRIANGLES のみを使用させる方法はありますか?
GLUtesselator を使用して、OpenGL で 3D 押し出しテキストを生成しようとしています。関連するコードは次のとおりです。
第11章のRedBookを信じるなら、
... エッジ フラグを有効にする GLU_TESS_EDGE_FLAG に関連付けられたコールバックがある場合、GLU_TESS_BEGIN コールバックは GL_TRIANGLES でのみ呼び出されます。
を使用してのみ描画する必要があると思いますGL_TRIANGLES
。
GL_TRIANGLE_FAN
ただし、カスタム テッセレータ コールバックで呼び出される型は、 、GL_TRIANGLE_STRIP
またはのいずれかであることがわかりますGL_TRIANGLES
。GL_QUADS
または以外のものを処理できる VBO を作成するには時間がかかりすぎているため、これを強制する方法があるかどうかだけを尋ねますGL_TRIANGLES
。
c++ - OpenGL/SFML でマウスの外観「カメラ」を実装しようとしています
私はしばらくの間、SFML 1.6 で OpenGL を使用してきました。例外が 1 つあります。カメラ クラスを正しく実装できないようです。ご覧のとおり、「Camera」という C++ クラスを作成しようとしています。ここに私の機能があります:
Camera::Strafe(float fSpeed)
WASD キーが押されているかどうかを確認し、押されている場合は、それぞれの方向に「fSpeed」でカメラを動かします。
Camera::MouseMove(int currentX, int currentY)
現在のマウス座標を取得し、それに応じてカメラを回転させて、一人称マウスの外観を提供する必要があります。私の Strafe() 実装は正常に動作しますが、MouseMove() を正しく取得できないようです。
OpenGL マウス ルックの実装に関する他のリソースを読んで、すべてのフレームの後にマウスを中央に配置する必要があることを既に知っています。しかし、それはそれについてです。マウス座標からその場で実際にカメラを回転させる方法がわからないようです。おそらくいくつかのトリガーを使用する必要があると思います。
opengl - cmake は QtOpenGL を使用して libGLU をリンクしません
QtOpenGL を使用するソフトウェアをコンパイルしようとしていますが、-lGLU が存在しないため、リンク エラーが発生しました。cmake を使用しています。CMakeLists.txt ファイルの唯一の関連行は私には思えますfind_package(Qt4 REQUIRED)
システムは Linux 64 ビット、Debian 不安定版、qt バージョン 4.7.3、cmake バージョン 2.8 です。
iphone - iPhone4 OpenGL ES GLuProject が間違った y 座標を返す
私は iPhone 4 OpenGL ES アプリで不可解な問題を抱えており、このサイトでいくつかの本当に有用で興味をそそるヒントや提案にもかかわらず、ここ数か月オンとオフに取り組んでおり、行き詰まりに陥っています。
ブロックを単純に描画し、ユーザーがブロックをさまざまな配置に移動できるようにする 3D ゲームを作成しています。アプリの大部分は C++ で記述されています。
私の問題は、ここでソースコードを見つけたGLuUnprojectを使用しようとしていることです:
http://webcvs.freedesktop.org/mesa/Mesa/src/glu/mesa/project.c?view=markup
ユーザーが選択した3Dポイント(したがってブロック)を解釈して移動および回転させ、倍精度ではなく浮動小数点に変換しました。
このソースをネット上の他のバージョンと比較したところ、一貫しているように見えることに注意してください。
次のコードを使用して光線ベクトルを取得します。
返された光線をニア プレーンからファー プレーンにトレースするためのベクトル コードは簡単で、画面の下部近くのブロックは正しく識別されていることがわかりますが、画面を上に移動すると、報告された値の不一致が大きくなるようです。選択したポイントの y 値と期待される y 値。
また、GLuProject を使用して、次のようにワールド座標に対してどのスクリーン座標が生成されているかを手動で確認しようとしました。
繰り返しになりますが、結果は、ユーザーが画面の上をクリックするにつれて GLuProjected の y 座標がますます間違っていくという点で、レイ トレーシング アプローチと一致しています。
たとえば、touchesBegan イベントによって直接報告されたクリック位置が (246,190) の場合、計算された位置は (246, 215) であり、不一致は 25 です。
touchesBegan イベントによって直接報告されたクリックされた位置が (246,398) の場合、計算された位置は (246, 405) であり、不一致は 7 です。
x座標は正しいようです。
ビューポートの高さが 480 (全画面の高さ) に設定されている場合、layer.bounds.size.height が 436 と報告されることに気付きました。レイヤー境界の幅は、ビューポートの幅でもある 320 として報告されます。
436 という値は、使用するビューポートのサイズに関係なく、ウィンドウの上部にステータス スクリーンを表示するかどうかに関係なく固定されているようです。
次の呼び出しの前に、bounds.size.height を 480 に設定しようとしました。
しかし、これは無視されているようで、高さは後で呼び出しで 436 として報告されます。
ポイントとピクセルの違いとスケーリングの必要性についての議論を見てきましたが、その違いは iPhone 4 の Retina ディスプレイ解像度によるものであり、異なるスケーリングが必要になることを示唆していたため、その情報を有効に使用するのに苦労しました。シミュレータと実際のデバイス。ただし、私が知る限り、シミュレーターとデバイスは一貫して動作しています。
2011 年 8 月 30 日 これに関するフィードバックが得られないので、質問をより扱いやすくするために提供できる情報はありますか?
2011 年 8 月 31 日 OpenGL のセットアップと表示コードは次のとおりです。
c++ - gluCylinder() とテクスチャ座標のオフセット/乗数?
gluCylinder() や gluDisk() などの関数のテクスチャ座標オフセットと乗数を設定するにはどうすればよいですか?
したがって、通常、テクスチャがポイント 0 から始まる場合、ポイント 0.6 または 3.2 などから開始するように設定したいと思います。つまり、テクスチャが大きくなったり小さくなったりするということです。
解決策は glScalef() ではありません。1) 法線を使用しているため、2) テクスチャの開始位置も調整したいからです。