• 締切済み

opengl vbaが使えない

VS C++(2008) MFCベースでOpenglを使ってます。 描画処理高速化のためVBO(vertex buffer object)を試しているのですが intel HD搭載のビデオカードですと色の描画がうまくいきません。 質問1:これはビデオカードによる障害でしょうか?それともコード側の問題でしょうか? 質問2:VBOを用いる時はビデオカードの型番などハード側の環境を確認した上で使用しないと問題が発生するものでしょうか? ご回答お待ちしております。

みんなの回答

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 ちょっと調べてみたところ"OpenGL Extensions Viewer"というのがあるようです。 実行することでビデオカードが各機能に対応しているかどうか確認できそうですので、 試してみてはいかがでしょうか? あとは、他の人が公開しているOpenGLのサンプルプログラムを実行してみるとか、 方法がわかりませんがハードウェアアクセラレーションをOffにして実行してみると、 という感じでしょうか・・・。

参考URL:
http://www.forest.impress.co.jp/library/software/openglexview/
mindeyed
質問者

お礼

ありがとうございます。 OpenGL Extensions Viewerで確認したところ、細かな情報が多く良く分からない点が多かったですがOpenGLの各バージョンの動作はOKでした。 色々とサンプルプログラムを動作させてみて、glVertexPointerを使ったコードが動作しました。 どうやらメソッド(バージョン)に対応しているビデオカードが決まっているみたいなので互換性の問題かもしれません。 とりあえず、この動作したメソッドを使って引き続き試してみようと思います。 また、躓いたら厳しいのですが・・・。 ハードウェアアクセラレーションも確認してみます。 コメント非常に助かりました!

関連するQ&A

  • OpenGLが動かないのですがなぜでしょうか?

    現在、私の使用しているノートPCでOpenGLを使用するソフトを動かしたいと考えているのですが、 なぜか、OpenGLを使った3Dを使用することができません。 PCは2年ほど前に購入したもので、 ビデオカードは、ATI Mobility Radeon X1600が搭載されています。 ビデオカード付属のコントロールソフトでOpenGLドライバのバージョンを確認したのですが、 「該当なし」となっており、どうやらコンピュータ上でドライバが認識されていないようでした。 そこで、ATIのホームページより、ドライバをダウンロードしよう思ったのですが、 ホームページ上でドライバを見つけることができませんでした。 どなたかOpenGLを動かす方法がわかる方がいらっしゃいましたら、教えてください。 よろしくお願いいたします。

  • OpenGL???

    こんばんわ。先日メダルオブオナーというEA GAMEから出ているゲームを購入したのですが、いざインストールしてプレイしようとすると"OpenGLをロードできません"と出てしまい、プレイできませんでした。なぜでしょうか。助けてください。そこらへんまったくもって無知なもんで、分かりませんです。OSはXP,ビデオカードはnVidiaのGeForce2 MXを使用してます。メダルオブオナーのHPによると、私が持ってるビデオカードは問題なく動作可能とでていたのですが、、、

  • opengl

    C++,openGLの質問です. 画像の上で2点を指定し,その2点を用いて画像上に四角形を表示したいのですがどういったpログラムを書けばいいでしょうか?イメージは図のような感じです.(1)と(2)が画像上で指定した点で高さが255の長方形になるようにしたいです. http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html#5 のサイトを参考に作ってみたのですが,いまいちわかりません. 以下,自分で作ってみたところです. わかりにくいと思いますが,アドバイスいただけたら嬉しいです. painted_pointはint型のベクターでクリックされた点の位置を保存しています. 最終的には,3点以上の折れ線上に長方形がつながってくっつくのことを予定しています. for(int i = 0; i<painted_point.size(); i++){ GLdouble vertex[][3] = { { painted_point.at(i).x, painted_point.at(i)., 0 }, { painted_point.at(i).x, painted_point.at(i)., 255 } } }; int edge[][2] = { {1 , 2} for(int i=0; i<painted_point.size(); i++){ edge[][2] ={{ i*2 , i*2 + 2}, { i*2+1 , i*2 + 3}, } {painted_point.size()-1,painted_point.size()} }; /* 図形の描画 */ glColor3d(0.0, 0.0, 0.0); glBegin(GL_LINES); for (i = 0; i < 12; ++i) { glVertex3dv(vertex[edge[i][0]]); glVertex3dv(vertex[edge[i][1]]); } glEnd(); }

  • Ubuntu11.4のUnityについて

    Ubuntu11.4のUnityをつかいんたいんですが、まづ使えるかチェックするために端末から”/usr/lib/nux/unity_support_test -p”を実行してテストしてみたんですが、 /usr/lib/nux/unity_support_test -p OpenGL vendor string: Mesa Project OpenGL renderer string: Software Rasterizer OpenGL version string: 2.1 Mesa 7.10.2 Not software rendered: no Not blacklisted: yes GLX fbconfig: yes GLX texture from pixmap: no GL npot or rect textures: yes GL vertex program: yes GL fragment program: yes GL vertex buffer object: yes GL framebuffer object: yes GL version is 1.4+: yes Unity supported: no と、なってしまいました。Unityが使えないのは分かるんですがなぜ使えないのかわかりません。 どなたか知っている方、よろしくお願いします。

  • openGLの回転の仕組みが分からなくて、困っています

    openGL初心者です。描画関数で以下のような書き方でx軸、y軸、z軸それぞれに角度を与えてオブジェクトを描画しているのですが、意図した角度に回転してくれません。 一応自分の認識では、openGLでは以下のような書き方をすると、まずオブジェクトの描画がされて、次にz軸の回転→y軸の回転→x軸の回転と、処理の順番とは逆に計算が行われると知ったのですが、まずその認識は正しいでしょうか? そこで、実際にx、y、z軸にそれぞれ角度を与えてオブジェクトを回転させてみるのですが、どうも意図した回転にならないのです。 例えばz軸に90度の値を与えて、オブジェクトを横に倒したとします。 まず、その状態でローカル座標系のx軸とy軸がz軸を中心に90度回っていると思っています。 その後、y軸に90度の値を与えても、ローカル座標系のy軸を中心に回らず、まるでワールド座標系のy軸を中心に90度回りまわっているように見えます。また、x軸も同様にワールド座標系のx軸を中心に90度回ります。 そこで、ワールド座標系で回るのかと思い、今度は、ニュートラルの状態から、y軸を90度回します。ローカル座標ではx軸、z軸がy軸を中心に90度回ると思います。次にx軸に対して、角度を与えてやると今度はローカル座標系のx軸を中心にまわるのです。 何故このような回転をするのかイメージできません。。どなたか回答いただけませんでしょうか? それと本当にやりたいことは、オブジェクトがどのような姿勢で回転していても(ローカル座標系がどうであれ)ワールド座標系のx、y、z軸を中心に回転させたいのですが、宜しければその辺も合わせて教えて頂けたら幸いです。 (数学の知識も乏しいので、数式がちゃんとあるのなら、その名前を教えていただければ直幸いです。) 乱文失礼します。 public void display(GLAutoDrawable drawable) { gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); gluLookAt((double) 0.0f, (double) 0.0f, (double) 5.5f, (double) 0.0f, (double) 0.0f, (double) 0.0f, (double) 0.0f, (double) 1.0f, (double) 0.0f); gl.glEnableClientState(GL.GL_VERTEX_ARRAY); gl.glEnableClientState(GL.GL_COLOR_ARRAY); gl.glRotatef(AngleX, 1, 0, 0); gl.glRotatef(AngleY, 0, 1, 0); gl.glRotatef(AngleZ, 0, 0, 1); // オブジェクト描画 draw(gl); gl.glDisableClientState(GL.GL_COLOR_ARRAY); gl.glDisableClientState(GL.GL_VERTEX_ARRAY); }

  • PhotoshopCS5回転ビューツールの使い方を教えてください

    PhotoshopCS5回転ビューツールの使い方を教えてください CS4から新機能に加わった回転ビューツールを使いたいのですが、 PhotoshopCS5の画面上で、カンバスを回転させるツールのようなものがみあたりません。 編集→環境設定→GPU設定で「OpenGL描画を有効にする」にチェックを入れようとしたところ、 「ハードウェアによる描画の高速化は使用できません。ビデオドライバー(および必要に応じてビデオカードも)アップグレードする必要があります。」 というメッセージが出るため、有効にできません。 ビデオドライバーはアップグレードしましたが状態は変わりません・・ ・私のPCにはビデオカードが搭載されていませんが、回転ビューツールを利用するにはビデオカードが必要なのでしょうか? ・「OpenGLのインストール」とういうものをネット上で見つけたのですが必要でしょうか? 色々調べたのですがどうしても分かりません。 知識が浅くすみませんが、分かる方教えてください。よろしくお願いします。 OS WindowsXP SP3 Version2002 CPU E6850 3.00GHz RAM 2G  HD 500G

  • OpenGL テクスチャを縮小表示すると縞模様が…

    こんにちは。お知恵をお借りしたく質問致します。 OpenGLのglTexImage2D関数でテクスチャを作り、Windowsフォームアプリケーション上に表示する際に起きた問題です。 なお、GLSLフラグメントシェーダでテクスチャは編集されています。 そのシェーダを利用した結果を表示すると、dot by dotで表示した際は正常に表示されるのですが、縮小して表示するとモアレと言いますか、縞模様が出てしまいます。※画像参照 また、縮小と言いますのはWindowsFormアプリ内のOpenGL描画用コントロール(glControl)そのものをリサイズするという意味で、テクスチャを作成する際に何か縮小操作を行ったというわけではありません。 テクスチャの貼付は以下のように行っています。 GL.Viewport(0, 0, glControl.Width, glControl.Height); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); GL.Enable(EnableCap.Texture2D); GL.Begin(BeginMode.Quads); { GL.TexCoord2(0, 0); GL.Vertex2(-1, 1); GL.TexCoord2(1, 0); GL.Vertex2(1, 1); GL.TexCoord2(1, 1); GL.Vertex2(1, -1); GL.TexCoord2(0, 1); GL.Vertex2(-1, -1); } GL.End(); GL.Disable(EnableCap.Texture2D); glControl.SwapBuffers(); テクスチャ(1920x1080、RGBA)自体の作成が(理由は不明ですが)縮小時のみおかしくなっている、又はテクスチャの貼り方やビューポート周りの設定不足のように思って居るのですが、原因が掴めていない状況です。 参考までに、補間方法を変えた際の違いも一応スクリーンショットに撮りましたのでよろしければご覧ください。 たった今、glGetTexImageという関数で、作成したテクスチャを取得できるらしいということが分かり、これを用いて縮小表示している際もテクスチャそのものが正常に作成されているかどうかを確認しようと思っています。(が、環境が手元に無く、この確認は明日の朝となります。) この原因及び対処法など、解決の手助けとなるようなことがありましたら何でも構いませんので教えていただきたいです。 その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。 どうかよろしくお願いいたします。

  • ディスプレイの接続場所とビデオカードについて

    初歩的な事だと思いますがどの様に検索して調べたら良いのかわからなかったので、 いくつか質問させて頂きます。 PCについて詳しくなく意味の違う単語などあると思いますが宜しくお願いします。 1、ビデオカードを搭載したPCのマザーボード側にディスプレイを接続した場合、 ビデオカードが描画した映像は見ることはできませんか? マザーボード側でも同じ映像が流れるのでしょうか? 2、モニタのサイズ、解像度やマルチディスプレイをした場合にマザーボード、 ビデオカードの性能は影響しますか? 例えば1920×1080のディスプレイ2つを接続した場合、 マザーボードではカクカクだがビデオカードではスムーズに映るなどの違い。

  • 2D性能優先かつOpenGLがそこそこ強いビデオカード

     2D性能優先かつOpenGLがそこそこ強いビデオカードを探しておりますが、いわゆるゲーマー用のハイエンドカードは望んでいません。  今のところcanopusの MTVGA 9600XTかGeForce 6200を使用したその他のメーカーを検討していますが、メーカーの数が多すぎてどこが良いか分かりません。  以下の条件で皆様のお奨めのカードがございましたら、メーカと型番をご教授いただけますよう宜しくお願いします。  特に、canopus製のMTVGA 9600XTとGeForce 6200使用カードの比較の経験談などがございましたら、そちらも歓迎いたします。 [1]テキストや写真の2D静止画像の発色が良く、くっきりとしていること。 [2]信号が良質でDVD再生時にノイズが少ないこと。 [3]OpenGLがそこそこ強いこと。 <装着予定のPC> ミニタワーですからカードサイズの制約は無いと思います。 下のPCIスロットは開いています。 AGP4x(Pro)まで対応しています。 ビデオカードに割り当てられる電源は220W位までだと思います。(省エネにこしたことはありませんが,,,) OSはWindows XP Pro(SP2)を使用します。 <接続モニタ> RDF173H (アナログCRTなので信号の影響をもろに受けます。)

  • 自分のPCのビデオカードを知りたい

    オンラインゲームをしたいのですが、ビデオカードが、 DirectX 9.0c 以上に対応した VRAM 64 MB 以上を搭載のビデオカード (ハードウェアでサポートされた Pixel Shader 1.1、Vertex Shader 1.1 以上 の 3D アクセラレーター機能を搭載したもの) って書いてあったのですが、自分のPCのビデオカードが基準を満たしているのかわかりません、 どうやったらビデオカードのスペック(?)見れますか?? あと、それが基準を満たしてない場合は、 ソフトとか違うからヴァージョンアップとかできないんですよね? 違うPCを使うしか道はないんでしょうか? 教えてください。。m(_ _)m

専門家に質問してみよう