이 전에 물체를 회전시켰더니 라이트가 같이 회전하여 질문글일 남겼었는데요 .. <div>stack을 활용해보라고 하셔서 활용해봤으나.. 라이트는 적용되지만..이번에는 물체가 회전을 안합니다..ㅠㅠ</div> <div> 제가 무엇을 잘못한 것인지 이해가 안되서 질문드립니다. 이게 첫 번째 질문입니다.</div> <div>( 이전 글 답변자 분 께서 <span style="line-height:19.200000762939453px;font-size:9pt;">stack push -> draw 지구 -> 특정 축 23.5도 회전 -> 특정 축 0~360도 회전 -> 초기 상태 stack pop -> 라이트 배치 순서로 해보라고 하셔서 해봤으나... 제가 무엇을 잘못했는지 궁금합니다.)</span></div> <div><span style="line-height:19.200000762939453px;font-size:9pt;"><br></span></div> <div><span style="line-height:19.200000762939453px;font-size:9pt;">두 번째 질문은 stack 의 push pop을 자료구조를 공부해서 무슨 의미인줄은 알겠으나..</span></div> <div><span style="line-height:19.200000762939453px;font-size:9pt;">이것이 opengl에서 의미하는 바를 명확하게 모르겠습니다..</span></div> <div><span style="line-height:19.200000762939453px;">인터넷에 검색해보니 기존값을 저장할 때 push를 쓰고 다시 그 값을 불러올 때 Pop을 쓰라는데 ..</span></div> <div><span style="line-height:19.200000762939453px;">이게 ......코드에서 무슨 의미가 있는지..궁금합니다.</span></div> <div><span style="line-height:19.200000762939453px;">(제가 나름대로 유추해본 것은.. 코드를 보니 기본값을 Push를 통해 저장하고 object를 트랜스폼한다음에 다시 기본 설정값을 Pop하더라구요..</span></div> <div><span style="line-height:19.200000762939453px;">그래서 생각해봤던게 push를 해놓으면...트랜스폼이 적용이 안되는 건가요 ...?ㅠㅠㅠㅠ)</span></div> <div><br></div> <div><span style="line-height:19.200000762939453px;font-size:9pt;"><br></span></div> <div>세 번째 질문은 texture 파일을 로드하면 '소스파일이 없습니다' 라고 뜨면서 에러가 발생합니다...</div> <div>이 텍스쳐 파일이 .rbg 포멧입니다. 근데 제가 이것을 연결할..프로그램이 없는데 혹시 그래서 문제가 생긴지 궁금합니다.</div> <div>만약 그러한 문제 때문이라면 어떠한 프로그램을 깔아야하는지도 궁금합니다 ㅠㅠㅠ</div> <div>인터넷에 쳐봤는데..모르겠습니다 ㅜㅠㅠ</div> <div><br></div> <div>코드가 도움이 될꺼같아 첨부합니다. 코드는 지구를 만들고 23.5 기울인 채 일정한 속도로 회전하는 물체를 만드는 것입니다.</div> <div><br></div> <div>------------------------------------------------------------------------------------------------------</div> <div><br></div> <div><div>#include "stdafx.h"</div> <div>#include "GL\glut.h"</div> <div>#include "GL\gl.h"</div> <div>#include "GL\glu.h"</div> <div>#include <math.h></div> <div>//#include <iostream></div> <div><br></div> <div>#define M 32</div> <div>#define N 64</div> <div>#define PI 3.141592265358979</div> <div><br></div> <div>unsigned int texture=0;</div> <div>int angle =30;</div> <div><br></div> <div><br></div> <div>void myIdle(int i)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>angle+=1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutPostRedisplay();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutTimerFunc(33, myIdle, 0);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return;</div> <div>}//애니매이션 효과를 주고싶을 때</div> <div><br></div> <div><br></div> <div>void myReshape(int w, int h)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d %d",w,h);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return ;</div> <div>}//정삭 작동 확인 위한 함수</div> <div><br></div> <div><br></div> <div>void Render()</div> <div>{</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glEnable(GL_TEXTURE_2D);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if( texture ==0)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glGenTextures(1,&texture);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>unsigned char * buf = new unsigned char[2048*2048*3];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>FILE* file = fopen("earth.rgb","rb");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fread(buf,3,2048*2048,file);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fclose(file);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glBindTexture(GL_TEXTURE_2D, texture);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE );</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST );</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_NEAREST );</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_REPEAT );</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_REPEAT );</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2048, 2048, 0, GL_RGBA, GL_UNSIGNED_BYTE,buf);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glClearColor(0,1,1,0.2);//전체 배경색 설정</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glClear(GL_COLOR_BUFFER_BIT+GL_DEPTH_BUFFER_BIT);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glMatrixMode(GL_PROJECTION);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLoadIdentity();</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>// -- Perspective ---</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>gluPerspective(45,1,0.00001,1000);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLoadIdentity();</div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glPushMatrix();</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(int j=0-64; j <= M-64 ; j++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float phi1=PI/2-PI*j/(float)M;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float phi2=PI/2-PI*(j+1)/(float)M;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float y1 = sinf(phi1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float y2 = sinf(phi2);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float r1 = cosf(phi1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float r2 = cosf(phi2);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glBegin(GL_TRIANGLE_STRIP);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(int i=0-32 ; i<=N-32 ; i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float theta=PI/2-PI*2*i/(float)N;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glNormal3f(r1*cosf(theta),y1,r1*sinf(theta));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glVertex3f(r1*cosf(theta),y1,r1*sinf(theta));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glNormal3f(r2*cosf(theta),y2,r2*sinf(theta));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glVertex3f(r2*cosf(theta),y2,r2*sinf(theta));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glEnd();</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glRotatef(-23.5, 0, 0, 1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glRotatef(angle,0,1,0);</div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glPopMatrix();</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glEnable(GL_DEPTH_TEST);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glEnable(GL_LIGHTING);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glEnable(GL_LIGHT0);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float dgray[4]={0.2,0.2,0.2,0.2};</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float lgray[4]={0.8,0.8,0.8,0.8};</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float white[4]={1,1,1,1};</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>float position[4]={5,5,-5,2};</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLightfv(GL_LIGHT0, GL_POSITION, position);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLightfv(GL_LIGHT0, GL_DIFFUSE, white);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLightfv(GL_LIGHT0, GL_SPECULAR, white);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLightfv(GL_LIGHT0, GL_AMBIENT, dgray);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, dgray);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, lgray);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, white);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glMaterialfv (GL_FRONT_AND_BACK, GL_SHININESS, white);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glLightf(GL_LIGHT0,GL_SHININESS,1000);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutSwapBuffers();</div> <div><br></div> <div><br></div> <div>}</div></div> <div><br></div> <div><div>int _tmain(int argc, _TCHAR* argv[])</div> <div>{</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutInit(&argc,argv);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutInitDisplayMode(GLUT_RGB+GLUT_DOUBLE+GLUT_MULTISAMPLE);//초기화</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutInitWindowSize(540,480);//window size</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutInitWindowPosition(0,0);//window position</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutCreateWindow("Earth");//window name</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutDisplayFunc(Render);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutReshapeFunc(myReshape);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>myIdle(1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutTimerFunc(33,myIdle,0);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>glutMainLoop();</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.