DrawGLScene.cpp

by Kuba on December 29th, 2010
No notes
Syntax: C++
Show lines - Hide lines - Show in textbox - Download
  1. #include "SDL_opengl.h"
  2. #include "LadujScene.h"
  3.  
  4. extern GLuint tex[];
  5. float x, y, z; int pos;
  6.  
  7. void rysujNiebo();
  8. void rysujZiemie();
  9. void rysujCube(float x, float y, float z);
  10. void rysujMurek(float x, float y, float z);
  11. void rysujSciane(float x, float y, float z, int Sciana);
  12. void rysujPodloge(float x, float y, float z);
  13. void fotka_leo(float x, float y, float z);
  14. void fotka_me(float x, float y, float z);
  15.  
  16. void DrawGLScene( float xPos, float zPos, float yRot, float walkbias, float lookupdown )
  17. {
  18. GLfloat xTrans = -xPos;
  19. GLfloat zTrans = -zPos;
  20. GLfloat yTrans = -walkbias + -25.0f;
  21. GLfloat sceneroty = 360.0f - yRot;
  22.  
  23. glRotatef(lookupdown, 1.0f, 0.0f, 0.0f);
  24. glRotatef( sceneroty, 0.0f, 1.0f, 0.0f );
  25. glTranslatef(xTrans, yTrans, zTrans);
  26.  
  27. int i = 0;
  28.  
  29. do
  30. {
  31. x = Sciana[i].x;
  32. y = Sciana[i].y;
  33. z = Sciana[i].z;
  34. pos = Sciana[i].pos;
  35. rysujSciane( x, y, z, pos);
  36. i++;
  37. }
  38. while(i != iloscScian);
  39.  
  40. i = 0;
  41.  
  42. do
  43. {
  44. x = Podloga[i].x;
  45. y = Podloga[i].y;
  46. z = Podloga[i].z;
  47. rysujPodloge( x, y, z );
  48. i++;
  49. }
  50. while(i != iloscPodlog);
  51.  
  52. rysujZiemie();
  53. rysujNiebo();
  54. }
  55.  
  56. void rysujSciane(float x, float y, float z, int Sciana)
  57. {
  58. if( Sciana == PIONOWA )
  59. {
  60. for( int i=0; i<=90; i+=10 )
  61. rysujMurek( x+i, y, z );
  62. }
  63. else if( Sciana == POZIOMA )
  64. {
  65. for( int j=0; j<=90; j+=10 )
  66. rysujMurek( x, y, z+j );
  67. }
  68.  
  69. // for ( int i=0; i<=90; i+=10 )
  70. // for ( int j=0; j<=90; j+=10 )
  71. // rysujMurek( x+i, y, z+j );
  72.  
  73. }
  74.  
  75. void rysujMurek(float x, float y, float z)
  76. {
  77. rysujCube(x, -10.0f, z);
  78. rysujCube(x, 0.0f, z);
  79. rysujCube(x, 10.0f, z);
  80. rysujCube(x, 20.0f, z);
  81. rysujCube(x, 30.0f, z);
  82. rysujCube(x, 40.0f, z);
  83. rysujCube(x, 50.0f, z);
  84. }
  85.  
  86. void rysujCube(float x, float y, float z)
  87. {
  88. //int wysokosc = 20;
  89.  
  90. glBindTexture(GL_TEXTURE_2D,tex[1]);
  91. glBegin( GL_QUADS );
  92. // FRONT
  93. glTexCoord2f(0.0f, 0.0f); glVertex3f( x+10, y+10, z+10 ); // top right
  94. glTexCoord2f(1.0f, 0.0f); glVertex3f( x , y+10, z+10 ); // top left
  95. glTexCoord2f(1.0f, 1.0f); glVertex3f( x , y, z+10 ); // bottom left
  96. glTexCoord2f(0.0f, 1.0f); glVertex3f( x+10, y, z+10 ); // bottom right
  97.  
  98. // BACK
  99. glTexCoord2f(0.0f, 0.0f); glVertex3f( x+10, y, z ); // top right
  100. glTexCoord2f(1.0f, 0.0f); glVertex3f( x, y, z ); // top left
  101. glTexCoord2f(1.0f, 1.0f); glVertex3f( x, y+10, z ); // bottom left
  102. glTexCoord2f(0.0f, 1.0f); glVertex3f( x+10, y+10, z ); // bottom right
  103.  
  104. // TOP
  105. glTexCoord2f(0.0f, 0.0f); glVertex3f( x+10, y+10, z ); // top right
  106. glTexCoord2f(1.0f, 0.0f); glVertex3f( x, y+10, z ); // top left
  107. glTexCoord2f(1.0f, 1.0f); glVertex3f( x, y+10, z+10 ); // bottom left
  108. glTexCoord2f(0.0f, 1.0f); glVertex3f( x+10, y+10, z+10 ); // bottom right
  109.  
  110. // BOTTOM
  111. glTexCoord2f(0.0f, 0.0f); glVertex3f( x, y, z+10 ); // top right
  112. glTexCoord2f(1.0f, 0.0f); glVertex3f( x+10, y, z+10 ); // top left
  113. glTexCoord2f(1.0f, 1.0f); glVertex3f( x+10, y, z ); // bottom left
  114. glTexCoord2f(0.0f, 1.0f); glVertex3f( x, y, z ); // bottom right
  115.  
  116. // LEFT
  117. glTexCoord2f(0.0f, 0.0f); glVertex3f( x, y, z+10 ); // top right
  118. glTexCoord2f(1.0f, 0.0f); glVertex3f( x, y, z ); // top left
  119. glTexCoord2f(1.0f, 1.0f); glVertex3f( x, y+10, z ); // bottom left
  120. glTexCoord2f(0.0f, 1.0f); glVertex3f( x, y+10, z+10 ); // bottom right
  121.  
  122. // RIGHT
  123. glTexCoord2f(0.0f, 0.0f); glVertex3f( x+10, y+10, z ); // top right
  124. glTexCoord2f(1.0f, 0.0f); glVertex3f( x+10, y+10, z+10 ); // top left
  125. glTexCoord2f(1.0f, 1.0f); glVertex3f( x+10, y, z+10 ); // bottom left
  126. glTexCoord2f(0.0f, 1.0f); glVertex3f( x+10, y, z ); // bottom right
  127. glEnd();
  128. }
  129.  
  130. void rysujPodloge(float x, float y, float z)
  131. {
  132. glBindTexture(GL_TEXTURE_2D,tex[2]);
  133. glBegin( GL_QUADS );
  134. glTexCoord2f(0.0f, 0.0f); glVertex3f( x, -10.0f, z ); // top right
  135. glTexCoord2f(1.0f, 0.0f); glVertex3f( x-10, -10.0f, z ); // top left
  136. glTexCoord2f(1.0f, 1.0f); glVertex3f( x-10, -10.0f, z+10.0f ); // bottom left
  137. glTexCoord2f(0.0f, 1.0f); glVertex3f( x, -10.0f, z+10.0f ); // bottom right
  138. glEnd();
  139. }
  140.  
  141. //void rysujSufit(float x, float y, float z)
  142. //{
  143. // glBindTexture(GL_TEXTURE_2D,tex[3]);
  144. // glBegin( GL_QUADS );
  145. // glTexCoord2f(0.0f, 0.0f); glVertex3f( x, 20.0f, z ); // top right
  146. // glTexCoord2f(1.0f, 0.0f); glVertex3f( x-20, 20.0f, z ); // top left
  147. // glTexCoord2f(1.0f, 1.0f); glVertex3f( x-20, 20.0f, z+20.0f ); // bottom left
  148. // glTexCoord2f(0.0f, 1.0f); glVertex3f( x, 20.0f, z+20.0f ); // bottom right
  149. // glEnd();
  150. //}
  151.  
  152. void rysujZiemie()
  153. {
  154. glPushMatrix();
  155.  
  156. glBindTexture(GL_TEXTURE_2D, tex[3]);
  157. glTranslatef( 0.0f, -11.0f, 0.0f );
  158. glBegin(GL_QUADS);
  159. glTexCoord2f( 1.0f, 1.0f ); glVertex3f( -1000.0f, 0.0f, 1000.0f );
  160. glTexCoord2f( 50.0f, 1.0f ); glVertex3f( 1000.0f, 0.0f, 1000.0f );
  161. glTexCoord2f( 50.0f, 50.0f ); glVertex3f( 1000.0f, 0.0f, -1000.0f );
  162. glTexCoord2f( 1.0f, 50.0f ); glVertex3f( -1000.0f, 0.0f, -1000.0f );
  163. glEnd();
  164.  
  165. glPopMatrix();
  166. }
  167.  
  168. void rysujNiebo()
  169. {
  170. glPushMatrix();
  171. glBindTexture(GL_TEXTURE_2D,tex[6]);
  172. glBegin( GL_QUADS );
  173.  
  174. // TOP
  175. glTexCoord2f(0.0f, 0.0f); glVertex3f( -1000.0f, 200.0f, 1000.0f ); // top right
  176. glTexCoord2f(1.0f, 0.0f); glVertex3f( 1000.0f, 200.0f, 1000.0f ); // top left
  177. glTexCoord2f(1.0f, 1.0f); glVertex3f( 1000.0f, 200.0f, -1000.0f ); // bottom left
  178. glTexCoord2f(0.0f, 1.0f); glVertex3f( -1000.0f, 200.0f, -1000.0f ); // bottom right
  179.  
  180. // FRONT
  181. glTexCoord2f(0.0f, 0.0f); glVertex3f( -1000.0f, 200.0f, 1000.0f ); // top right
  182. glTexCoord2f(1.0f, 0.0f); glVertex3f( 1000.0f, 200.0f, 1000.0f ); // top left
  183. glTexCoord2f(1.0f, 1.0f); glVertex3f( 1000.0f, -11.0f, 1000.0f ); // bottom left
  184. glTexCoord2f(0.0f, 1.0f); glVertex3f( -1000.0f, -11.0f, 1000.0f ); // bottom right
  185.  
  186. // BACK
  187. glTexCoord2f(0.0f, 0.0f); glVertex3f( -1000.0f, 200.0f, -1000.0f ); // top right
  188. glTexCoord2f(1.0f, 0.0f); glVertex3f( 1000.0f, 200.0f, -1000.0f ); // top left
  189. glTexCoord2f(1.0f, 1.0f); glVertex3f( 1000.0f, -11.0f, -1000.0f ); // bottom left
  190. glTexCoord2f(0.0f, 1.0f); glVertex3f( -1000.0f, -11.0f, -1000.0f ); // bottom right
  191.  
  192. // LEFT
  193. glTexCoord2f(0.0f, 0.0f); glVertex3f( 1000.0f, 200.0f, 1000.0f ); // top right
  194. glTexCoord2f(1.0f, 0.0f); glVertex3f( 1000.0f, 200.0f, -1000.0f ); // top left
  195. glTexCoord2f(1.0f, 1.0f); glVertex3f( 1000.0f, -11.0f, -1000.0f ); // bottom left
  196. glTexCoord2f(0.0f, 1.0f); glVertex3f( 1000.0f, -11.0f, 1000.0f ); // bottom right
  197.  
  198. // RIGHT
  199. glTexCoord2f(0.0f, 0.0f); glVertex3f( -1000.0f, 200.0f, 1000.0f ); // top right
  200. glTexCoord2f(1.0f, 0.0f); glVertex3f( -1000.0f, 200.0f, -1000.0f ); // top left
  201. glTexCoord2f(1.0f, 1.0f); glVertex3f( -1000.0f, -11.0f, -1000.0f ); // bottom left
  202. glTexCoord2f(0.0f, 1.0f); glVertex3f( -1000.0f, -11.0f, 1000.0f ); // bottom right
  203.  
  204. glEnd();
  205. glPopMatrix();
  206. }
  207.  
  208. void fotka_leo(float x, float y, float z)
  209. {
  210. glPushMatrix();
  211. glLoadIdentity();
  212. glTranslatef( x, y, z );
  213. glBindTexture(GL_TEXTURE_2D,tex[4]);
  214. glBegin( GL_QUADS );
  215. glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.5f, -0.5f, 0.0f ); // top right
  216. glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.5f, -0.5f, 0.0f ); // top left
  217. glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.5f, 0.5f, 0.0f ); // bottom left
  218. glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.5f, 0.5f, 0.0f ); // bottom right
  219. glEnd();
  220. glPopMatrix();
  221. }
  222.  
  223. void fotka_me(float x, float y, float z)
  224. {
  225. glPushMatrix();
  226. glLoadIdentity();
  227. glTranslatef( x, y, z );
  228. glBindTexture(GL_TEXTURE_2D,tex[5]);
  229. glBegin( GL_QUADS );
  230. glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.5f, -0.5f, 0.0f ); // top right
  231. glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.5f, -0.5f, 0.0f ); // top left
  232. glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.5f, 0.5f, 0.0f ); // bottom left
  233. glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.5f, 0.5f, 0.0f ); // bottom right
  234. glEnd();
  235. glPopMatrix();
  236. }

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS