約 2,614,725 件
https://w.atwiki.jp/gametips/pages/16.html
OpenGLに関連するオススメの本や WEB サイトを紹介します. ページ右の画像をクリックすると Amazon で参考文献を購入できます. OpenGL策定委員会, 「OpenGLプログラミングガイド 原著第5版」, ピアソンエデュケーション OpenGLの赤本(Red Book)と呼ばれる定番の参考書の日本語版です。 少し値は張りますがOpenGLの基本的な使い方が丁寧にまとめられています。 初心者の方には敷居が高いかもしれませんがOpenGLを極めるつもりなら必須の教本だと思います。 Mark Segal, Kurt Akeley, Jon Leech, 「OpenGL4.0グラフィックスシステム」, カットシステム OpenGLの仕様書の日本語訳です。個人的には翻訳に違和感を覚えることはありませんでした。 英語が苦手な方は本書をAPIリファレンスの代わりに利用できます。 チュートリアルのような内容は含まれていませんので他の書籍との併用をオススメします。 床井 浩平, 「GLUTによるOpenGL入門」, 工学社 これから OpenGL を初めようとしている方にはこの本がオススメです。 おそらく OpenGL に関する文献の中では最も敷居が低く 3DCG に関する知識が全くなくても理解しやすいです。 少し内容は古いかもしれませんが導入という目的では最高の文献で、私もこの本から OpenGL に入門しました。 床井 浩平, 「GLUTによるOpenGL入門2 テクスチャマッピング」, 工学社 上の「GLUT によるOpenGL入門」の続編です。 前作の内容では物足りなかった方は本書を読むことで 3DCG の表現力が大幅に広がります。 引き続き平易な内容となっており、前作を読破した方であれば難なく理解できると思います。 David Wolff , 「OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング-」, ボーンデジタル 最近のゲームに見られるようなリアルな映像をつくりだすにはプログラマブル・シェーダという機能が欠かせません。 床井 浩平さんの「GLUTによるOpenGL入門2 テクスチャマッピング」でもシェーダに関しては少しだけ触れられていますが、書籍の後半で軽く紹介されているだけでいささか物足りない内容ではありますので、本格的に学ぶためにこの本の購入をオススメします。
https://w.atwiki.jp/bambooflow/pages/312.html
OpenGLのはじめ Qt4.7.3 OpenGLのはじめプロジェクトファイルを作成する(GUIアプリケーション) QGLWidgetの追加 実行結果 まとめ プロジェクトファイルを作成する(GUIアプリケーション) 新規プロジェクトを作成します。 メニューのファイルから、「ファイル/プロジェクトの新規作成」を選択します。 プロジェクトから「Qtウィジェット プロジェクト」→「Qt GUI アプリケーション」を選択します。 「選択」をクリックします。 プロジェクト名はここでは"hellogl"とします。 プロジェクトパス名を適当に設定します。ここでは"qtwork"を作成します。 「次へ」をクリックします。 ターゲット設定、そのまま「次へ」をクリックします。 クラス情報、そのまま「次へ」をクリックします。 プロジェクト管理、そのまま「次へ」をクリックします。 QGLWidgetの追加 次にQGLWdigetを継承したクラスを作成します。 ここではクラス名を"GLWidget"とします。 ファイルから「ファイル/プロジェクトの新規作成」 ファイルとクラスから「C++」→「C++クラス」を選択 「選択」をクリックします。 クラス名に、ここでは"GLWidget"と入力します。 入力したら、「次へ」をクリックします。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (gl007.png) プロジェクト管理、そのまま「完了」をクリックします。 すると、次のようにglwidget.hとglwidget.cppが追加されます。 ただし、まだ空のクラスを追加したにすぎないため、ここからキーボードを使ってプログラムを作成します。 glwidget.hおよびglwidget.cppを以下のように記述修正します。 glwidget.h #ifndef GLWIDGET_H #define GLWIDGET_H #include QGLWidget class GLWidget public QGLWidget { Q_OBJECT public GLWidget(QWidget *parent = 0); ~GLWidget(); protected virtual void initializeGL(); virtual void resizeGL( int w, int h ); virtual void paintGL(); }; #endif // GLWIDGET_H glwidget.cpp #include "glwidget.h" GLWidget GLWidget(QWidget *parent) QGLWidget(parent) { } GLWidget ~GLWidget() { } void GLWidget initializeGL() { glClearColor(0.3, 0.3, 0.3, 1.0); } void GLWidget resizeGL( int w, int h ) { glViewport(0, 0, w, h); glLoadIdentity(); glOrtho( -w/200.0, w/200.0, -h/200.0, h/200.0, -1.0, 1.0); } void GLWidget paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3d(1.0, 0.0, 0.0); glBegin(GL_POLYGON); glVertex2d(-0.5, -0.5); glVertex2d(0.5, -0.5); glVertex2d(0.5, 0.5); glVertex2d(-0.5, 0.5); glEnd(); //glFlush(); } 次がポイントです。 「クラスの格上げ」という機能を使ってユーザが作成したクラスをプロジェクトに組み込みます。 プロジェクト→フォームから"mainwindow.ui"をダブルクリックします。 するとウィンドウの右側にフォームの情報が表示されます。 "centralWidget"を右クリックして「クラスの格上げ指定」を選択します。 「格上げされたクラス名」に"GLWidget"と入力します。 入力したら「追加」ボタンをクリックします。 「格上げ」をクリックします。 これでユーザが作成した"GLWidget"が格上げされてプロジェクトに組み込まれました。 最後に、プロジェクトでOpenGLを使うので、 プロジェクトの"helllo.pro"を開き、「QT」の変数に"opengl"を追加します。 あとは、コンパイル&ビルドをするだけです。 実行結果 うまく実行できると、以下のような結果となります。 まとめ QtのバージョンがかわるごとにCreatorの使い方が微妙に変わってくるので、それに合わせて操作を覚えるのが大変です。 ただ、「格上げ」というのは便利なので、ぜひ覚えておきたい機能です。
https://w.atwiki.jp/soscomp/pages/108.html
GLUTによる「手抜き」OpenGL入門 和歌山大の先生が学生向けに書かれたものらしく、それなりにわかりやすい。 想像力をつけさせるためなのか、スクリーンショットが1枚もない。 RubyでOpenGL ruby-openglでお手軽3Dプログラミング ruby-openglで三角形を描画する 藤井研記録板 個別記事 更新・ツッコミページ glutTimerFunc モデルビュー変換 これらのサイトを参考にしながら和歌山大のチュートリアルをRuby語に翻訳しながら作ってみたのが以下のもの。 require "opengl" require "glut" display = proc { GL.Clear(GL COLOR_BUFFER_BIT) GL.Color3d(0.0, 0.0, 0.0) GL.Begin(GL LINES) #AB GL.Vertex3dv(0.0, 0.2, 0.0) GL.Vertex3dv(0.0, 0.0, 1.0) #AD GL.Vertex3dv(0.0, 0.2, 0.0) GL.Vertex3dv(-1.0, 0.0, 0.0) #AC GL.Vertex3dv(0.0, 0.2, 0.0) GL.Vertex3dv(1.0, 0.0, 0.0) #BD GL.Vertex3dv(0.0, 0.0, 1.0) GL.Vertex3dv(-1.0, 0.0, 0.0) #BC GL.Vertex3dv(0.0, 0.0, 1.0) GL.Vertex3dv(1.0, 0.0, 0.0) #CD GL.Vertex3dv(1.0, 0.0, 0.0) GL.Vertex3dv(-1.0, 0.0, 0.0) GL.End(); } resize = proc {|w,h| GL.Viewport(0, 0, w, h) GL.LoadIdentity() GLU.Perspective(30.0, w / h, 1.0, 100.0) GLU.LookAt(3.0, 3.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) } timer = proc { GL.Rotate(2.0, 0.0, 1.0, 0.0) GLUT.PostRedisplay() GLUT.TimerFunc(100, timer, 0) } GLUT.Init() GLUT.CreateWindow("ruby-opengl test") GLUT.DisplayFunc(display) GLUT.ReshapeFunc(resize) GL.ClearColor(0.5,0.5,0.5,0.0) GLUT.TimerFunc(100, timer, 0) GLUT.MainLoop() うすっぺらい三角錐がくるくるまわるよ! ・・・それだけ。 名前 コメント このページへのアクセス数 total - today - yesterday - このページのタグ一覧 OpenGL Ruby
https://w.atwiki.jp/gameswiki/pages/34.html
OpenGLで動作するゲームをプレイしたいが、古いPCで新しいOpenGLに対応していない際に使えるかもしれないライブラリ達 ※OpenGLのゲームが起動しても、正常に描画されない場合もあります。試してみて無理だった場合は、新しいPC(古くないなるべく新しいPC)を買いましょう。 オンラインゲームやそのサービス(主にSteam)等のオンラインプレイをこれらのOpenGLエミュレータを使用してプレイすると、バンされることがあります。オンラインプレイをする際は、消しましょう。 プロジェクト名 OpenGLのバージョン 備考 Mesa3D 3.x-4.x 要ビルド QindieGL 2.x OpenGLをDirect3D9でエミュレーションします。幾つかのゲーム(主にリンク先でサポートと書かれているゲーム)は動作しますが、動作しないものもあります。要レジストリ書き込み
https://w.atwiki.jp/nakamura001/pages/26.html
MacでのOpenGLプログラミング 開発環境の構築 開発環境の構築 入門 GLUTによる「手抜き」OpenGL入門 http //www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html データ エラーコード ヘルプ OpenGL GLUT ツール・ライブラリ ツール・ライブラリ 資料 書籍 書籍(2) サイト
https://w.atwiki.jp/bambooflow/pages/250.html
ヒストリ 勉強のため整理。 知識不足なので、まずはバージョンごとにどんな機能が使えるのかをしるために。 ヒストリOpenGL 1.0 OpenGL 1.1対応カード 拡張 OpenGL 1.2対応カード 拡張 OpenGL 1.2.1対応カード 拡張 OpenGL 1.3対応カード 拡張 OpenGL 1.4対応カード 拡張 OpenGL 1.5対応カード 拡張 OpenGL 2.0対応カード 拡張 OpenGL 2.1対応カード 拡張 OpenGL 3.0対応カード 拡張 OpenGL 3.1対応カード OpenGL 3.2対応カード OpenGL 3.3 OpenGL 4.0 OpenGL 4.1 参考 OpenGL 1.0 1992年1月リリース OpenGL 1.1 1997年1月リリース GPUハードウェア上でテクスチャについてサポート。 対応カード すべて。 拡張 Extension Extension ID Functions 頂点配列 EXT_vertex_array glVertexPointer, glColorPointer, glNormalPointer ポリゴン・オフセット (depth biasing) EXT_polygon_offset glPolygonOffset RGBA混合 EXT_blend_logic_op glBlendFunc テクスチャ・コピー/Subコピー EXT_subtexture, EXT_copy_texture glTexSubImage1D/2D/3D テクスチャ・フォーマット EXT_texture RGB, LUMINANCE, ALPHA, INTENSITY (in glTexImage2D) テクスチャ・オブジェクト EXT_texture_object glGenTextures, glBindTextures OpenGL 1.2 1998年3月リリース ボリュームテクスチャ パックドピクセル normal rescaling clamped/edgeテクスチャ・サンプリング イメージ・プロセッシング 対応カード Rage 128 Rage 128 GL Rage XL/XC, Rage 128 Pro Rage Fury MAXX それ以降のカード 拡張 Extension Extension ID Functions 3D Volume Textures GL_EXT_texture3D glTexImage3DEXT BGRA Texture Format GL_EXT_bgra BGR_EXT, BGRA_EXT (in glTexImage2D) Packed Pixels GL_EXT_packed_pixels Normal Rescaling GL_EXT_rescale_normal Separate Specular Color GL_EXT_separate_specular_color Texture Coord Edge Clamping SGIS_texture_edge_clamp Texture LOD Control SGIS_texture_lod Draw Range Elements EXT_draw_range_elements glDrawRangeElements Image Processing Subset EXT_color_table, EXT_convolution, SGI_color_matrix, EXT_histogram, EXT_blend_color, EXT_blend_minmax OpenGL 1.2.1 1998年10月リリース multi-texture texture unit rendering pipeline 対応カード Radeon Radeon Mobility Radeon 7500 Mobility Radeon 8500 Radeon 9000 Radeon 9200 Radeon 9600 Radeon 9800 GeForce 3 GeForce 4Ti GeForce FX それ以降のカード 拡張 Extension Extension ID Functions マルチ・テクスチャリング SGIS_multitexture glActiveTextureARB, glClientActiveTextureARB OpenGL 1.3 2001年8月リリース cubemap texture multi-texturing multi-sampling texture unit combine opeerations(add, combine, dot3, border clamp) 対応カード Radeon 32/36 Radeon 64/7200 Radeon 7000 Radeon 7500 Radeon IGP 320M Radeon IGP 345M ES1000 Radeon 8500 Radeon 9000/Pro Radeon 9100/9200/9250 (Pro IGP) GeForce 3 GeForce 4Ti GeForce FX それ以降のカード 拡張 Extension Extension ID Functions Compressed Textures GL_ARB_texture_compression Cubemaps GL_EXT_texture_cube_map TEXTURE_CUBE_MAP_EXT Multi-Sampling GL_ARB_multisample Texture Add GL_ARB_texture_env_add Texture Combine GL_ARB_texture_env_combine Texture Dot3 GL_ARB_texture_env_dot3 Texture Border Clamping GL_ARB_texture_border_clamp Matrix Transpose GL_ARB_transpose_matrix OpenGL 1.4 2002年6月リリース hardware shadowing fog coordinates automatic mipmap generation additional texture mode 対応カード Quadro DCC Quadro4 380 XGL Quadro4 500XGL, 5500XGL Quadro4 700XGL, 750XGL Quadro4 900XGL, 980XGL それ以降のカード GMA 900 (910GL, 915GL, 915GV, 915G) GMA 950 (945GZ, 945GC, 945G, Mobile 945 Family) GMA 3000 (946GZ, Q963, Q965) 拡張 Extension Extension ID Functions Automatic Mipmaps SGIS_generate_mipmap Blend Squaring Functions GL_NV_blend_square Depth Textures GL_ARB_depth_texture DEPTH_COMPONENT16/24/32_ARB Hardware Shadowing Z-depth GL_ARB_shadow COMPARE_R_TO_TEXTURE Fog Coordinates GL_EXT_fog_coord Multiple Draw Arrays GL_EXT_multi_draw_arrays Point Parameters GL_ARB_point_parameter Secondary Color GL_EXT_secondary_color Separate Blend Functions GL_EXT_blend_func_separate Stencil Wrapping GL_EXT_stencil_wrap Texture Crossbar Environment Mode GL_ARB_texture_env_crossbar Texture LOD Bias GL_EXT_texture_lod_bias Texture Mirrored Repeat GL_ARB_texture_mirrored_repeat Window Raster Position GL_ARB_window_pos OpenGL 1.5 2003年6月リリース vertex buffer objects(VBO) occlusion queries extended shadowing function 対応カード Radeon X800 Radeon 9600 Radeon 9700 Radeon 9800 GeForce FX それ以降のカード GMA 3100 (Q33, Q35, G31, G33) GMA 3150 (Atom Dx10, N4x0) GMA X3100 (GL960, GLE960, GM965, GME965) 拡張 Extension Extension ID Functions VBOs Vertex Buffer Objects GL_ARB_vertex_buffer_object glBindBufferARB, glBufferDataARB, glGenBuffersARB Occlusion Queries GL_ARB_occlusion_query Extended Shadow Functions GL_EXT_shadow_funcs OpenGL 2.0 2004年9月リリース ARB呼び出しGPUベースassembly language ユーザ・プログラマブル・シェーダ バーテックス・シェーダ フラグメント・シェーダ 対応カード Radeon 9650 Radeon 9500 Radeon 9500/9550/9600/9700/9800 (Pro, SE, XT) Radeon X1050 Radeon Xpress 200/1100 Radeon X300 Radeon X550 Radeon X600/Pro Radeon X700 Radeon X800(VE, SE, GT, Pro) Radeon X850 Radeon Xpress 1250 Radeon X1200 Radeon X1250 Radeon 2100 Radeon X1300 Radeon X1550 Radeon X1600 Radeon X1650 Radeon X1800 Radeon X1900 Radeon X1950 (Pro, XT, GT) GeForce 6800 Quadro 600 Quadro FX 500 Quadro FX 700 Quadro FX 1000 Quadro FX 2000 Quadro FX 3000 Quadro FX 1400 Quadro FX 1500 Quadro FX 3450 Quadro FX 3500 Quadro FX 4500X2 Quadro FX 4500 SDI それ以降のカード GMA 500 (UL11L, US15L, US15W) GMA X3000 (G965) GMA X3500 (G35) 拡張 Extension Extension ID Functions Shader Objects GL_ARB_shader_objects Vertex Programs GL_ARB_vertex_program glBindProgramARB, glGenProgramsARB Vertex Shaders (VS) GL_ARB_vertex_shader Fragment Shaders (FS) GL_ARB_fragment_shader Multiple Render Targets GL_ARB_draw_buffers glDrawBuffers Rectangular Texture GL_ARB_texture_rectangle GL_TEXTURE_RECTANGLE_ARB Point Sprites GL_ARB_point_sprite Separate Blend Equation GL_EXT_blend_equation_separate Separate Stencil GL_EXT_stencil_two_side OpenGL 2.1 2006年6月リリース pixel buffer objects(PBO) sRGBテクスチャ(gamma-corrected textures) non-square matrices Shading Language GLSL 1.20 対応カード Radeon GD 2350 GeForce FX (with driver 175.19) GeForce 6000シリーズ Geforce 7000シリーズ GeForce Go 7000シリーズ Quadro FX 4000 Quadro FX 350 Quadro FX 550 Quadro FX 560 Quadro FX 1400 Quadro FX 1500 Quadro FX 5500 それ以降のカード GMA 4500 (B43, Q43, Q45) GMA X4500 (G41, G43) GMA X4500HD (G45) GMA 4500MHD (GL40, GS40, GM45, GS45) GMA Graphics GMA HD (Clarkdale GMCH Die Ironlake, Arrandale GMCH Die Ironlake) 拡張 Extension Extension ID Functions Non-Square Matricies glUniformMatrix{}fv PBOs Pixel Buffer Objects GL_ARB_pixel_buffer_object sRGB Texture (gamma 2.2) GL_EXT_texture_sRGB OpenGL 3.0 2008年6月リリース OpenGL Shading Language 1.30 (GLSL) Vertex Array Objects More flexible Framebuffer Objects 32-bit(single precision) floating-point textures and render buffers 16-bit(half precision) floating-point vertex and pixel data Ability to render vertex transformations into a buffer Texture arrays 32-bit(single precision) float point depth buffer support 対応カード Radeon HDシリーズ GeForce 8000, 9000 GTX 100 GTX 200 GTX 300シリーズ 拡張 Extension Extension ID Functions Geometry Shader (GS) GL_EXT_geometry_shader4 GEOMETRY_SHADER_EXT FBOs Frame Buffer Objects GL_EXT_framebuffer_object glFrameBufferTexture2DEXT FBO Multisampling GL_EXT_framebuffer_multisample Hardware Instancing GL_EXT_draw_instanced glDrawArraysInstancedEXT, glDrawElementsInstancedEXT VAOs Vertex Array Objects GL_ARB_vertex_array_object glBindVertexArray, glGenVertexArray sRGB Framebuffers (gamma 2.2 GL_EXT_framebuffer_sRGB FRAMEBUFFER_SRGB_EXT OpenGL 3.1 2009年5月 OpenGL Shading Language 1.40(GLSL) Texture Buffer Objects Uniform Buffer Object Signed normalized textures (+-1.0 range) A minimum of 16 texture units accessible by the vertex shader Primitive restart Instancing CopyGBuffer API 対応カード OpenGL 3.2 2009年8月 OpenGL Shading Language 1.50(GLSL) ジオメトリ・シェーダ BGRA vertex component ordering Shader Fragment coordinate convention control Seamless cube map filtering Fragment depth clamping Multisampled textures and texture samples for specific sample locations Sync and Fence objects 対応カード Radeon HD シリーズ GeForce 8000, 9000 GTX 100 GTX 200 GTX 300シリーズ OpenGL 3.3 OpenGL Shading Language 3.3(GLSL)このバージョンからOpenGLとGLSLのバージョンを合わせてきた OpenGL 4.0 OpenGL Shading Language 4.0(GLSL) DirextX11相当 OpenGL 4.1 OpenGL Shading Language 4.1(GLSL) 参考 http //en.wikipedia.org/wiki/OpenGL http //en.wikipedia.org/wiki/Intel_GMA
https://w.atwiki.jp/bambooflow/pages/196.html
OpenGL/glut使い方メモ API VCEE
https://w.atwiki.jp/bambooflow/pages/277.html
OpenGL4.x OpenGL4.x系の処理を記載する。
https://w.atwiki.jp/bambooflow/pages/321.html
QtでOpenGL:タイマーを使ったアニメーション QtでOpenGL:タイマーを使ったアニメーション概要 ソースコード 概要 QGLWidgetのpaintGL()はupdateGL()がシグナルとなって呼ばれます。 ここではタイマーを使って一定間隔ごとにupdateGL()を呼ぶことでアニメーションさせます。 タイマーは、QBasicTimerクラスを用います。 QBasicTimer 使い方は下記の通りです。 #include QBasicTimer QBasicTimer timer; void GLWidget initializeGL() { //タイマーの開始、間隔を16ms(≒60fps)に設定 timer.start(16, this); } void GLWidget timerEvent(QTimerEvent *e) { Q_UNUSED(e); updateGL(); } このとき、timer.startの第一引数がタイマーの間隔で、第二引数がtimerEventメソッドを持つオブジェクトを渡します。 ここではGLWidgetのメソッドとしてtiemrEventを用意しているので、第二引数はthisとします。 ソースコード glwidget.h #ifndef GLWIDGET_H #define GLWIDGET_H #include QGLWidget #include QVector3D #include QBasicTimer class GLWidget public QGLWidget { Q_OBJECT public GLWidget(QWidget *parent = 0); ~GLWidget(); protected void timerEvent(QTimerEvent *e); protected virtual void initializeGL(); virtual void resizeGL( int w, int h ); virtual void paintGL(); GLuint createCube(); private QBasicTimer *timer; private GLfloat angle; GLuint cubeList; }; #endif // GLWIDGET_H glwidget.cpp #include "glwidget.h" #include math.h GLWidget GLWidget(QWidget *parent) QGLWidget(parent), timer(new QBasicTimer) { } GLWidget ~GLWidget() { delete timer; timer = 0; } void GLWidget timerEvent(QTimerEvent *e) { Q_UNUSED(e); updateGL(); } void GLWidget initializeGL() { glClearColor(0.5, 0.5, 0.5, 1.0); glEnable(GL_DEPTH_TEST); //カリング:表面のみ表示 glEnable(GL_CULL_FACE); glCullFace(GL_BACK); //光源有効 glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); //光源の設定 GLfloat light_position[] = { -50.0, 50.0, 50.0, 1.0 }; GLfloat light_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; glLightfv( GL_LIGHT0, GL_POSITION, light_position ); glLightfv( GL_LIGHT0, GL_AMBIENT, light_ambient ); glLightfv( GL_LIGHT0, GL_DIFFUSE, light_diffuse ); glLightfv( GL_LIGHT0, GL_SPECULAR, light_specular ); cubeList = createCube(); timer- start(16, this); // タイマー開始 } void GLWidget resizeGL( int w, int h ) { glViewport(0, 0, w, h); //プロジェクション・マトリックス設定 glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); } void GLWidget paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //モデル・ビュー・マトリックス設定 glMatrixMode (GL_MODELVIEW); glLoadIdentity(); //カメラ設定 gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glPushMatrix(); { // 直方体の表示 //材質設定 GLfloat red[] = { 0.8, 0.2, 0.2, 1.0 }; glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red); glRotatef(angle, 0.0, 1.0, 0.0); // 回転 //glCallList(cubeList); glCallList(sphereList); } glPopMatrix(); angle = (angle 360.0) ? angle-360.0 angle+1; } GLuint GLWidget createCube() { GLuint index = glGenLists(1); float lx = 0.5f; float ly = 0.5f; float lz = 0.5f; glNewList(index, GL_COMPILE); // sides glBegin (GL_TRIANGLE_STRIP); glNormal3f (-1,0,0); glVertex3f (-lx,-ly,-lz); glVertex3f (-lx,-ly,lz); glVertex3f (-lx,ly,-lz); glVertex3f (-lx,ly,lz); glNormal3f (0,1,0); glVertex3f (lx,ly,-lz); glVertex3f (lx,ly,lz); glNormal3f (1,0,0); glVertex3f (lx,-ly,-lz); glVertex3f (lx,-ly,lz); glNormal3f (0,-1,0); glVertex3f (-lx,-ly,-lz); glVertex3f (-lx,-ly,lz); glEnd(); // top face glBegin (GL_TRIANGLE_FAN); glNormal3f (0,0,1); glVertex3f (-lx,-ly,lz); glVertex3f (lx,-ly,lz); glVertex3f (lx,ly,lz); glVertex3f (-lx,ly,lz); glEnd(); // bottom face glBegin (GL_TRIANGLE_FAN); glNormal3f (0,0,-1); glVertex3f (-lx,-ly,-lz); glVertex3f (-lx,ly,-lz); glVertex3f (lx,ly,-lz); glVertex3f (lx,-ly,-lz); glEnd(); glEndList(); return index; }
https://w.atwiki.jp/tsukune/pages/201.html
General Scene の初期設定に二つのレンダリング・オプション、OpenGL(オープン・GL)とSoftware(ソフトウェア)がありました。違いを説明します。 Software: デフォルトのレンダラーです。ハードウェアによる高速化はありませんが、多くの場合、こちらの方が高速かつ頼りになるレンダラーです。OpenGLモードを試してみてこちらより良い結果を得られなければ、こちらをお使いください。 OpenGL Carraraは進化版テクスチャ・モードと同等のアルファチャンネル付きテクスチャマップをサポートした先進のOpenGLエンジンを装備しています。この機能はポリゴン・モデラーで多量のメッシュを編集する際にも力を発揮します。このレンダラーは3Dオブジェクトの描画にビデオカードのOpenGL APIを使うので、お持ちのビデオカードがOpenGLをサポートしていれば、より高いパフォーマンスを発揮します。ですが、市場に出ている既存の多くのビデオカードはまだフルサポートはしていません。その場合はソフトウェア・レンダラーの方がよりよい再描画速度を示すので、そちらをお使いください。 OpenGLレンダラーは3Dオブジェクトの描画を高速化するためにグラフィックカードを使います。ほとんどのシステム構成で動作するようにしてあるものの、OpenGLによる所要性能があります。 またOpenGLレンダラーは最新版のグラフィック・ドライバーが必要です。(グラフィック・ドライバーとはオペレーティング・システムとグラフィック・ハードウェアをインターフェースするソフトウェアです)。 グラフィック・ドライバのアップデートをするには、グラフィック・カードのメーカか、コンピュータのメーカにコンタクトしてください。通常、必要な最新版のドライバはメーカのWebサイトからダウンロードできます。 以上に加えて、OpenGLレンダラーの設定として以下のオプションを初期設定ダイアログで選択できます。 030-9.jpg Display lists(ディスプレイ・リスツ)機能を有効にするには、 1.File ⇒ Preferences 2.プルダウンからOpenGLを選択 3.Use Display Listsにチェック。これで既存オブジェクトの形状をグラフィックカード内にキャッシュすることができます。オブジェクトの表示速度を向上しますが、ビデオ・ドライバによっては問題を起こすことがあります。ですからこの設定をチェックする前に、作業中のシーンやレンダリング画像など、大切なものは残らずセーブしておくようにしてください 。