Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Grass::draw()
- {
- if (grass_part0!=NULL || grass_part1!=NULL || grass_part2!=NULL)
- {
- delete grass_part0; delete grass_part1; delete grass_part2; grass_part0=NULL; grass_part1!=NULL; grass_part2=NULL;
- }
- glm::vec4 coordinates;
- coordinates=glm::vec4{m_x,m_y,0.0f,1.0f};
- coordinates=m_MMatrix->MultiplyWithMainMatrix(coordinates);
- d_x=coordinates.x;
- d_y=coordinates.y;
- d_y-=m_w;
- grass_part0= new GLquad(m_sprite,
- d_x-16,d_y, d_x+m_w-16,d_y,
- d_x+m_w,d_y+128, d_x+m_w,d_y+128,
- 0,0, m_w/64,0,
- m_w/64,1, 0,1);
- grass_part1= new GLquad(m_sprite,
- d_x+16,d_y, d_x+m_w+16,d_y,
- d_x+m_w,d_y+128, d_x+m_w,d_y+128,
- 0,0, m_w/64,0,
- m_w/64,1, 0,1);
- grass_part2= new GLquad(m_sprite,
- d_x,d_y, d_x+m_w,d_y,
- d_x+m_w,d_y+128, d_x+m_w,d_y+128,
- 0,0, m_w/64,0,
- m_w/64,1, 0,1);
- for (int i=0;i<m_h/64;i++)
- {
- d_y+=m_h/16;
- int d_y_prev=d_y;
- for (int j=-3;j<=3;j++)
- {
- d_y=d_y_prev+j*8;
- //if (m_player_y<)
- if (j%3==0)
- {
- delete grass_part2;
- grass_part2= new GLquad(m_sprite,
- d_x,d_y, d_x+m_w,d_y,
- d_x+m_w,d_y+128, d_x+m_x,d_y+128,
- 0,0, m_w/64,0,
- m_w/64,1, 0,1);
- glUseProgram(shaderprogram);
- GLint CoordinatesLocation=glGetAttribLocation(shaderprogram,"inCoordinates");
- glVertexAttribPointer(CoordinatesLocation,0,GL_FLOAT,GL_FALSE,8,grass_part2->Verticles);
- glEnableVertexAttribArray(CoordinatesLocation);
- GLint TexCoordsLocation=glGetAttribLocation(shaderprogram,"inTexcoord");
- glVertexAttribPointer(TexCoordsLocation,1,GL_FLOAT,GL_FALSE,8,grass_part2->TexCoords);
- glEnableVertexAttribArray(TexCoordsLocation);
- GLint IndicesLocation=glGetAttribLocation(shaderprogram,"inIndex");
- glVertexAttribPointer(IndicesLocation,2,GL_INT,GL_FALSE,4,grass_part2->Indices);
- glEnableVertexAttribArray(IndicesLocation);
- GLint TextureLocation = glGetUniformLocation(shaderprogram,"uSampler");
- glUniform1i(TextureLocation,0);
- grass_part2->draw_primitive();
- glUseProgram(0);
- }
- else if (j%3==1)
- {
- delete grass_part1;
- glUseProgram(shaderprogram);
- grass_part1= new GLquad(m_sprite,
- d_x+16,d_y, d_x+m_w+16,d_y,
- d_x+m_w,d_y+128, d_x+m_x,d_y+128,
- 0,0, m_w/64,0,
- m_w/64,1, 0,1);
- grass_part1->draw_primitive();
- glUseProgram(0);
- }
- else
- {
- delete grass_part0;
- glUseProgram(shaderprogram);
- grass_part0= new GLquad(m_sprite,
- d_x-16,d_y, d_x+m_w-16,d_y,
- d_x+m_w,d_y+128, d_x+m_x,d_y+128,
- 0,0, m_w/64,0,
- m_w/64,1, 0,1);
- grass_part0->draw_primitive();
- glUseProgram(0);
- }
- }
- d_y=d_y_prev;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement