1. Си / Говнокод #10186

    +125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    void DrawScene( void )
    {
    	glPushMatrix();
    	glClearColor(0.0F, 0.0F, 0.0F, 1.0F); 
    	glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    	glEnable( GL_DEPTH_TEST );
    
    	glLoadIdentity();
    	glTranslated( 0.0, 0.0, -2.0 );
    	glMultMatrixd( RotMatrix );
    
    	glColor3f( 0.0, 0.0, 1.0 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.5, 0.0 );
    		glVertex3d( 0.0, 0.0, 0.5 );
    	glEnd();
    	glColor3f( 0.0, 1.0, 0.0 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.0, -0.5 );
    		glVertex3d( 0.0, -0.5, 0.0 );
    	glEnd();
    	glColor3f( 1.0, 0.0, 0.0 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.5, 0.0 );
    		glVertex3d( 0.0, 0.0, -0.5 );
    	glEnd();
    	glColor3f( 0.0, 0.5, 0.5 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.0, 0.5 );
    		glVertex3d( 0.0, -0.5, 0.0 );
    	glEnd();
    
    	glColor3f( 0.5, 0.0, 0.5 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.0, 0.5 );
    	glEnd();
    	glColor3f( 0.5, 0.5, 0.0 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( -0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.0, -0.5 );
    	glEnd();
    	glColor3f( 0.75, 0.25, 0.5 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( -0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.0, 0.5 );
    	glEnd();
    	glColor3f( 0.5, 0.25, 0.75 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.0, -0.5 );
    	glEnd();
    
    	glColor3f( 0.25, 0.75, 0.5 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.5, 0.0 );
    	glEnd();
    	glColor3f( 0.5, 0.75, 0.25 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.0, -0.5, 0.0 );
    		glVertex3d( -0.5, 0.0, 0.0 );
    	glEnd();
    	glColor3f( 0.25, 0.5, 0.75 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( -0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, 0.5, 0.0 );
    	glEnd();
    	glColor3f( 0.75, 0.5, 0.25 );
    	glBegin( GL_POLYGON );
    		glVertex3d( 0.0, 0.0, 0.0 );
    		glVertex3d( 0.5, 0.0, 0.0 );
    		glVertex3d( 0.0, -0.5, 0.0 );
    	glEnd();
    	
    	glDisable( GL_DEPTH_TEST );
    
    	glFlush();
    	glPopMatrix();
    }

    Запостил: serg_ik, 04 Мая 2012

    Комментарии (17) RSS

    • гейдев
      Ответить
    • Нормальный кот
      Ответить
    • А в чем говнище - то? Если вы не знаете особенностей библиотеки OpenGL, то это не значит что программист - говнокодер.
      Ответить
      • В glBegin/glEnd и в том, что модель захардкожена.
        Правда, мне вот от glBegin/glEnd тупо не уйти, потому что у меня модели слишком заскриптованы для того, чтобы их можно было представить как единый кусок константных вершин.
        Ответить
        • Уважаемый, копировать все данные в VBO каждый кадр и то быстрее, чем glBegin glEnd. Да... я проверял. И вам советую!
          Ответить
          • ВБО у меня на старом компе не поддерживается, а glDrawElements фигня: даже если не копировать, а заранее все массивы подготовиь, то у меня на Интеле-945 ускорение составило всего лишь полтора раза и чтобы оно было заметно, надо 100К треугольников вывести.
            Ответить
        • Я подозреваю, что это учебный проект «мой первый вращающийся кубик на OpenGL»

          В этом случае говна нет.
          Ответить
    • RotMatrix - матрица гниения?
      Ответить
    • А зачем нужно было все вручную инлайнить? Компилятор не догадался бы?
      Ответить
    • Какой-то пример или проба. Говна не вижу.
      Ответить
    • VBO! Шейдеры! OpenGL 2.0!
      Ответить
    • 1. GL_POLYGON -> GL_TRIANGLES
      2. Убрать множество glBegin glEnd и все вставить в один блок
      3. glDisable( GL_DEPTH_TEST ); - нафиг в конце перед флашем?...
      4. Immediate mode (он же glBegin glVertex glEnd) - упразднен, работает медленно и поддерживается плохо и то только по доброте душевной гигантов гпу-строения. Пора бы VBO освоить...

      Говна тут хватает!
      Ответить

    Добавить комментарий