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

    +142

    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
    void BloomPattern::process(GLuint rectangleVao, float blurRadius) const
    {
       sptrFrameBufferTwo->enable();
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       sptrBrightPassShaderProgram->enable();
       glActiveTexture(GL_TEXTURE0);
       glBindTexture(GL_TEXTURE_2D, sptrFrameBufferThree->getColorTexture().getTexture());
       sptrBrightPassShaderProgram->setUniform("colorTexture", 0);
       glBindVertexArray(rectangleVao);
       glViewport(0, 0, windowWidth >> 1, windowHeight >> 1);
       glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
       sptrFrameBufferOne->enable();
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       sptrBlurShaderProgram->enable();
       glBindTexture(GL_TEXTURE_2D, sptrFrameBufferTwo->getColorTexture().getTexture());
       sptrBlurShaderProgram->setUniform("defaultTexture", 0);
       sptrBlurShaderProgram->setUniform("blurRadius", 1.0F / (windowWidth >> 1), 0.0F, blurRadius);
       glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
       sptrFrameBufferTwo->enable();
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glBindTexture(GL_TEXTURE_2D, sptrFrameBufferOne->getColorTexture().getTexture());
       sptrBlurShaderProgram->setUniform("defaultTexture", 0);
       sptrBlurShaderProgram->setUniform("blurRadius", 0.0F, 1.0F / (windowHeight >> 1), blurRadius);
       glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
       sptrFinalFrameBuffer->enable();
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       sptrBloomShaderProgram->enable();
       glBindTexture(GL_TEXTURE_2D, sptrFrameBufferThree->getColorTexture().getTexture());
       glActiveTexture(GL_TEXTURE1);
       glBindTexture(GL_TEXTURE_2D, sptrFrameBufferTwo->getColorTexture().getTexture());
       sptrBloomShaderProgram->setUniform("defaultTexture", 0);
       sptrBloomShaderProgram->setUniform("brightpassTexture", 1);
       glViewport(0, 0, windowWidth, windowHeight);
       glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
       glBindFramebuffer(GL_FRAMEBUFFER, 0);
    }

    Запостил: jangolare, 07 Июля 2015

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

    • Где ГК?
      Ответить
      • в глобальных переменных. не?
        Ответить
        • это константы
          Ответить
        • > глобальных
          sptr* - это члены класса, не?
          Ответить
          • >члены класса
            методы ?

            sptrBrightPassShaderProgram->enable();
            похоже на объекты.
            Ответить
            • > методы ?
              Какие еще методы? Просто переменные-члены:
              class BloomPattern {
              private:
                  SmartPointer<ShaderProgram> sptrBrightPassShaderProgram;
                  // ...
              };
              Ответить
              • а чего в крестах можно к ним обращаться без this ?
                Ответить
                • Конечно, как и в жабе.
                  Ответить
                  • А что будет если есть глобальная переменная стем же именем что и член класса, кто вызовется ?
                    Ответить
                    • Член класса, разумеется.
                      А если есть локальный параметр с тем же именем, то победит локальный параметр.
                      Стандартные правила областей видимости.
                      Ответить
                      • вот. А если нужно вызвать метод глобального объекта. Чего делать надо ?
                        Ответить
                        • В жабе нет глобальных объектов. Там можно скрыть переменную в нестатическом вложенном классе, но тогда это решается тривиально:
                          OuterClass.this.doStuff();

                          Если нужно обратиться к члену текущего объекта, перекрытому локальной переменной - используется явный this-> / this.

                          В плюсах бывают глобальные переменные, там всегда можно указать явную область видимости для символа через двойные двоеточия

                          ::GlobalObject->doStuff();
                          Ответить
                          • Спасибо. ИМХО явный this как в пхп всяко лучше.
                            Ответить
                            • В Go ещё лучше - именуй this как хочешь, всегда явно:
                              func (doer *Doer) DoStuff() {
                                  doer.Do()
                                  doer.Stuff()
                              }
                              Ответить
                              • В питоне тоже, но только мудаки называют его по-другому. Это такой шик - иметь явный параметр, который нельзя назвать по-другому?
                                Ответить
                                • Although that way may not be obvious at first unless you're Dutch.

                                  Видимо, это один из тех случаев.
                                  Ответить
                                  • А в го есть свой гнидо?
                                    Ответить
                                    • Роб Пайк и Кен Томпсон.

                                      Сказали, язык существенно меняться в обозримом будущем не будет.

                                      Будет улучшаться рантайм и расширяться стандартная библиотека.
                                      Ответить
                                      • Зачем тогда там это сделали?

                                        >Кен Томпсон
                                        Он еще не сдох?
                                        Ответить
                                        • > Зачем тогда там это сделали?

                                          Что сделали? Явно именуют аргумент this? Ну например затем, что аргумент может приходить в метод по ссылке и по значению. Можно прикреплять методы к типам-значениям вроде инта.
                                          func (byref *T) M()
                                          func (byval T) M()

                                          > Он еще не сдох?
                                          С чего вдруг. Пусть живёт, хороший дядька.
                                          Ответить
                                          • >С чего вдруг.
                                            Ну ричи воткнул пару лет назад, а этот, сука, еще и языки разрабатывает.

                                            >аргумент может приходить в метод по ссылке и по значению.
                                            this?
                                            Ответить
                                            • А чем тебе дядя Ричи не угодил?
                                              Ответить
                                              • не скачет скорее всего.
                                                Ответить
                                                • Мне почему то вспомнился бородатый как Ричи анекдот

                                                  — У вас шарики есть.
                                                  — Есть.
                                                  — Хорошие?
                                                  — Нет, плохие.
                                                  — Дырявые?
                                                  — Нет — не дырявые.
                                                  — Плохо дуются?
                                                  — Нет, хорошо.
                                                  — Не яркие?
                                                  — Яркие.
                                                  — А почему, плохие?
                                                  Не скачут Не радуют...
                                                  Ответить
                                          • на Столлмана похож.
                                            Ответить
                                            • томпсон полезным делом занимается, в отличие от ногожера.
                                              Ответить
                                            • Столлман в чем то даже очень умный и правильные вещи говорит. Жаль только поехавший
                                              Ответить
                            • Но часто получается какая-то многословность с этим "this".
                              Пишу на крестах - красота: функции, переменные, классы. Пишу на жс - функции, перем... this, this, this! This this! За this что?! this отвлекает от сути.
                              Хотя, можно использовать синонимы, это да.
                              Ответить
                              • в дельфе есть неплохая конструкция with ... do которая от лишних this и прочей много словности избавляет
                                Ответить
                                • в js тоже есть, только от неё одни проблемы.
                                  Ответить
                                  • Как и с foreach и много еще с чем.
                                    Ответить
                                  • тоже значения у прототипа находит?
                                    Ответить
                                    • находит
                                      Ответить
                                      • - Есть че по методам? А если найду?
                                        - А если не найдешь?
                                        - o SHI...
                                        Ответить
                                      • Весь js сранное говно. Ток то его придумал должен гореть в аду.
                                        Ответить
                                        • а еще есть реализация жс на жс...
                                          Ответить
                                          • eval ?
                                            Ответить
                                            • eval - это слишком простой путь.
                                              На ГК уже обсуждали https://github.com/jterrace/js.js/ - SpiderMonjey на жс.
                                              А ещё есть как минимум https://github.com/NeilFraser/JS-Interpreter (рукописная питушня?), только там не до конца реализовано.
                                              Ответить
                                              • js.js создали, чтобы любой желающий мог запустить js.js из-под js.js и получить падение пирфоманса в сорок тысяч раз.
                                                Ответить
                                                • Yo dawg! I heard that you like js, so we write js on js so you can compile js on js while you write js.
                                                  Ответить
            • а что, класс не может содержать обьекты другого класса?
              Ответить
              • может но например в php к ним обращаются как $this->Объект_другого_класса->метод()
                Ответить

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