Кресты / Говнокод #18443 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 jangolare, (Updated )

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

        • >члены класса
          методы ?

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

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

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

                        ::GlobalObject->doStuff();
                        Ответить
                          • В 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 отвлекает от сути.
                            Хотя, можно использовать синонимы, это да.
                            Ответить
          • а что, класс не может содержать обьекты другого класса?
            Ответить
            • может но например в php к ним обращаются как $this->Объект_другого_класса->метод()
              Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8