質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

2100閲覧

両面に異なる表面属性を設定する

tktoo

総合スコア8

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/27 06:13

###前提・実現したいこと
ロケットの噴射口の部分の両面に異なる表面属性を設定する

###発生している問題

噴射口の両面に異なる表面属性がついているが、胴体部分の表面属性が反映されない

###該当のソースコード

c++

1if(shadeFlag==GL_TRUE) 2 { 3 glEnable( GL_LIGHTING ); 4 } 5 glEnable( GL_NORMALIZE ); 6 glNormal3f(0.0, 1.0, 0.0); 7 glPushMatrix(); 8 glEnable(GL_LIGHTING); 9 glRotatef(theta*0.4, 0.0, 1.0, 0.0); 10 glTranslatef(0.0, 1.0, 0.0); 11 if (wireFlag == GL_TRUE) 12 myWireCylinder(1.0, 2.0, 12); 13 else 14 mySolidCylinder(1.0, 2.0, 20); 15 glTranslatef( 0.0, 1.0, 0.0); 16 glRotatef( -90.0, 1.0, 0.0, 0.0 ); 17 glScalef( 1.0 , 1.0 , 1.0 ); 18 if(wireFlag==GL_TRUE) 19 glutWireCone( 1.0, 2.0, 12, 3 ); 20 else 21 glutSolidCone( 1.0, 2.0, 20, 3); 22 glPopMatrix(); 23 24 glPushMatrix(); 25 glRotatef( theta*1.0, 0.0, 1.0, 0.0 ); 26 glTranslatef(0.0, -1.0, 0.0); 27 if(moveFlag==GL_TRUE) 28 glTranslatef( 0.0, fly, 0.0); 29 else fly=0.0; 30 if(wireFlag==GL_TRUE) 31 myWireCylinder( 1.0, 2.0, 12 ); 32 else 33 mySolidCylinder( 1.0, 2.0, 20 ); 34 glEnable( GL_NORMALIZE ); 35 for (i = 0; i < 4; i++){ 36 glPushMatrix(); 37 glEnable(GL_LIGHTING); 38 glRotatef(90.0*(float)i, 0.0, 1.0, 0.0); 39 glTranslatef(1.5, 1.0, 0.0); 40 glScalef(1.0, 2.0, 0.3); 41 if (wireFlag == GL_TRUE) 42 glutWireCube(1.0); 43 else 44 glutSolidCube(1.0); 45 glPopMatrix(); 46 } 47 glPushMatrix(); 48 if (moveFlag == GL_TRUE){ 49 //glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); 50 glRotatef(theta*0.01, 0.0, 1.0, 0.0); 51 } 52 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); 53 glMaterialfv(GL_FRONT, GL_DIFFUSE, blue); 54 glMaterialfv(GL_BACK, GL_DIFFUSE, yellow); 55 glTranslatef( 0.0, -1.4, 0.0); 56 glRotatef( -90.0 , 1.0 ,0.0 , 0.0 ); 57 if(wireFlag==GL_TRUE) 58 glutWireCone( 0.9 , 0.9 ,12, 3); 59 else 60 glutSolidCone( 0.9 , 0.9 ,20, 3); 61 glDisable(GL_LIGHTING); 62 glPopMatrix(); 63 64 glPopMatrix(); 65 66 glPopMatrix(); 67 glutSwapBuffers(); 68}

###補足情報
opengl

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

openglには疎いのですが、両面をレンダリングする部分(噴射口)は
正常に出ているということでしょうか
だとすれば、胴体をレンダリングするときは片面に戻さないといけない、ということはありませんか?

投稿2016/12/17 03:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問