1. C++ / Говнокод #19610

    +6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    void MultMatrix(const GLfloat m1[16], const GLfloat m2[16], GLfloat result[16])
    {
      glLoadMatrixf(m1);
      glMultMatrixf(m2);
      glGetFloatv(GL_MODELVIEW_MATRIX, result);
    }

    Запостил: LispGovno, 12 Марта 2016

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

    • Так быстрее
      Ответить
      • > GL_MODELVIEW_MATRIX
        А вдруг другая матрица была текущей?
        Ответить
        • Это очень легко пофиксить. Достаточно задокументировать UB при текущей матрице, отличной от GL_MODELVIEW_MATRIX.
          Ответить
      • Ага, в несколько потоков на видеокарте перемножатся.
        Ответить
        • Ну не на видеокарте, но разрабы OpenGL всяко выдрочили до блеска это умножение матриц.

          И задепрекейтили его в 3.0+, емнип, а в ES вообще выпилили.
          Ответить
    • Не понял кода, объясните
      Ответить
      • Автору было лень писать код умножения матриц, поэтому он воспользовался готовыми функциями из OpenGL.
        Ответить
        • И что не так?
          Ответить
          • То, что эти функции используют т.н. текущую матрицу как аккумулятор (по сути - одну из трёх глобальных матриц). И чтобы этот код работал, вызывающий код должен быть уверен, что выбрана именно modelview...Ну и должен знать, что этот код её помнёт.
            Ответить
            • Ну а есть же pushMatrix/popMatrix. Тогда по идее ничего не похерится.
              Ответить
              • > ничего
                Ну да. Только тогда надо не modelview читать, а текущую матрицу.
                Ответить
                • Говорят, что немецкий канцлер Отто Бисмарк по пути в Петербург нанял ямщика, но усомнился, что его лошади (больше похожие на крыс, чем на лошадей) могут ехать достаточно быстро. "Ничего-о!" - отвечал ямщик и понесся так быстро по неровной дороге, что Бисмарк забеспокоился: "Да ты меня не вывалишь?" "Ничего!" - отвечал ямщик. Тут сани опрокинулись, и Бисмарк упал в снег, в кровь ободрав лицо о пень. В ярости он замахнулся на ямщика стальной тростью, а тот загреб ручищами пригоршню снега, чтобы обтереть окровавленное лицо Бисмарка, и всё приговаривал: "Ничего... ничего-о!" В Петербурге Бисмарк заказал кольцо из этой трости с надписью Ничего! И признавался, что в трудные минуты он испытывал облегчение, говоря себе: "Ничего!" Когда "железного канцлера" упрекали за слишком мягкое отношение к России, он отвечал: "В Германии только я один говорю "ничего!", а в России - весь народ".
                  Ответить
    • Потокобезопасненько.
      Ответить

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