Advertisement
Guest User

tesselator.cpp

a guest
Jan 24th, 2020
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. #include "tesselator.h"
  2.  
  3. Tesselator::Tesselator(){
  4. ClearQuads();
  5. ClearTextureQuads();
  6. }
  7.  
  8. void Tesselator::AddVertexQuad(float x, float y, float z){
  9. arrayVertexQuads[vertexQuadsPos++] = x;
  10. arrayVertexQuads[vertexQuadsPos++] = y;
  11. arrayVertexQuads[vertexQuadsPos++] = z;
  12. vertexQuadsCount++;
  13. }
  14.  
  15. void Tesselator::FlushQuads(){
  16. if (vertexQuadsCount){
  17. glInterleavedArrays(GL_V3F, 0, &arrayVertexQuads);
  18. glEnableClientState(GL_VERTEX_ARRAY);
  19. glDrawArrays(GL_QUADS, 0, vertexQuadsCount);
  20. glDisableClientState(GL_VERTEX_ARRAY);
  21. ClearQuads();
  22. }
  23. }
  24.  
  25. void Tesselator::ClearQuads(){
  26. vertexQuadsCount = 0;
  27. vertexQuadsPos = 0;
  28. }
  29.  
  30. void Tesselator::AddTextureVertexQuad(float u, float v, float x, float y, float z){
  31. arrayTextureVertexQuads[vertexTextureQuadsPos++] = u;
  32. arrayTextureVertexQuads[vertexTextureQuadsPos++] = v;
  33. arrayTextureVertexQuads[vertexTextureQuadsPos++] = x;
  34. arrayTextureVertexQuads[vertexTextureQuadsPos++] = y;
  35. arrayTextureVertexQuads[vertexTextureQuadsPos++] = z;
  36. vertexTextureQuadsCount++;
  37. }
  38.  
  39. void Tesselator::FlushTextureQuads(){
  40. if (vertexTextureQuadsCount){
  41. glInterleavedArrays(GL_T2F_V3F, 0, &arrayTextureVertexQuads);
  42. glEnableClientState(GL_VERTEX_ARRAY);
  43. glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  44. glDrawArrays(GL_QUADS, 0, vertexTextureQuadsCount);
  45. glDisableClientState(GL_TEXTURE_COORD_ARRAY);
  46. glDisableClientState(GL_VERTEX_ARRAY);
  47. ClearTextureQuads();
  48. }
  49. }
  50.  
  51. void Tesselator::ClearTextureQuads(){
  52. vertexTextureQuadsCount = 0;
  53. vertexTextureQuadsPos = 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement