Advertisement
Guest User

Untitled

a guest
May 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. void Grass::draw()
  2. {
  3. if (grass_part0!=NULL || grass_part1!=NULL || grass_part2!=NULL)
  4. {
  5. delete grass_part0; delete grass_part1; delete grass_part2; grass_part0=NULL; grass_part1!=NULL; grass_part2=NULL;
  6. }
  7.  
  8. glm::vec4 coordinates;
  9. coordinates=glm::vec4{m_x,m_y,0.0f,1.0f};
  10. coordinates=m_MMatrix->MultiplyWithMainMatrix(coordinates);
  11.  
  12. d_x=coordinates.x;
  13. d_y=coordinates.y;
  14. d_y-=m_w;
  15.  
  16.  
  17. grass_part0= new GLquad(m_sprite,
  18. d_x-16,d_y, d_x+m_w-16,d_y,
  19. d_x+m_w,d_y+128, d_x+m_w,d_y+128,
  20.  
  21. 0,0, m_w/64,0,
  22. m_w/64,1, 0,1);
  23.  
  24. grass_part1= new GLquad(m_sprite,
  25. d_x+16,d_y, d_x+m_w+16,d_y,
  26. d_x+m_w,d_y+128, d_x+m_w,d_y+128,
  27.  
  28. 0,0, m_w/64,0,
  29. m_w/64,1, 0,1);
  30.  
  31. grass_part2= new GLquad(m_sprite,
  32. d_x,d_y, d_x+m_w,d_y,
  33. d_x+m_w,d_y+128, d_x+m_w,d_y+128,
  34.  
  35. 0,0, m_w/64,0,
  36. m_w/64,1, 0,1);
  37.  
  38.  
  39.  
  40. for (int i=0;i<m_h/64;i++)
  41. {
  42. d_y+=m_h/16;
  43. int d_y_prev=d_y;
  44. for (int j=-3;j<=3;j++)
  45. {
  46. d_y=d_y_prev+j*8;
  47.  
  48. //if (m_player_y<)
  49.  
  50. if (j%3==0)
  51. {
  52. delete grass_part2;
  53.  
  54.  
  55. grass_part2= new GLquad(m_sprite,
  56. d_x,d_y, d_x+m_w,d_y,
  57. d_x+m_w,d_y+128, d_x+m_x,d_y+128,
  58.  
  59. 0,0, m_w/64,0,
  60. m_w/64,1, 0,1);
  61. glUseProgram(shaderprogram);
  62.  
  63. GLint CoordinatesLocation=glGetAttribLocation(shaderprogram,"inCoordinates");
  64. glVertexAttribPointer(CoordinatesLocation,0,GL_FLOAT,GL_FALSE,8,grass_part2->Verticles);
  65. glEnableVertexAttribArray(CoordinatesLocation);
  66.  
  67. GLint TexCoordsLocation=glGetAttribLocation(shaderprogram,"inTexcoord");
  68. glVertexAttribPointer(TexCoordsLocation,1,GL_FLOAT,GL_FALSE,8,grass_part2->TexCoords);
  69. glEnableVertexAttribArray(TexCoordsLocation);
  70.  
  71. GLint IndicesLocation=glGetAttribLocation(shaderprogram,"inIndex");
  72. glVertexAttribPointer(IndicesLocation,2,GL_INT,GL_FALSE,4,grass_part2->Indices);
  73. glEnableVertexAttribArray(IndicesLocation);
  74.  
  75. GLint TextureLocation = glGetUniformLocation(shaderprogram,"uSampler");
  76. glUniform1i(TextureLocation,0);
  77.  
  78.  
  79.  
  80.  
  81. grass_part2->draw_primitive();
  82. glUseProgram(0);
  83. }
  84. else if (j%3==1)
  85. {
  86. delete grass_part1;
  87. glUseProgram(shaderprogram);
  88.  
  89. grass_part1= new GLquad(m_sprite,
  90. d_x+16,d_y, d_x+m_w+16,d_y,
  91. d_x+m_w,d_y+128, d_x+m_x,d_y+128,
  92.  
  93. 0,0, m_w/64,0,
  94. m_w/64,1, 0,1);
  95. grass_part1->draw_primitive();
  96. glUseProgram(0);
  97. }
  98. else
  99. {
  100. delete grass_part0;
  101. glUseProgram(shaderprogram);
  102.  
  103. grass_part0= new GLquad(m_sprite,
  104. d_x-16,d_y, d_x+m_w-16,d_y,
  105. d_x+m_w,d_y+128, d_x+m_x,d_y+128,
  106.  
  107. 0,0, m_w/64,0,
  108. m_w/64,1, 0,1);
  109. grass_part0->draw_primitive();
  110. glUseProgram(0);
  111. }
  112.  
  113. }
  114. d_y=d_y_prev;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement