- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 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);
}
это ?
sptr* - это члены класса, не?
методы ?
sptrBrightPassShaderProgram->enable();
похоже на объекты.
Какие еще методы? Просто переменные-члены:
А если есть локальный параметр с тем же именем, то победит локальный параметр.
Стандартные правила областей видимости.
OuterClass.this.doStuff();
Если нужно обратиться к члену текущего объекта, перекрытому локальной переменной - используется явный this-> / this.
В плюсах бывают глобальные переменные, там всегда можно указать явную область видимости для символа через двойные двоеточия
::GlobalObject->doStuff();
Видимо, это один из тех случаев.
Сказали, язык существенно меняться в обозримом будущем не будет.
Будет улучшаться рантайм и расширяться стандартная библиотека.
>Кен Томпсон
Он еще не сдох?
Что сделали? Явно именуют аргумент this? Ну например затем, что аргумент может приходить в метод по ссылке и по значению. Можно прикреплять методы к типам-значениям вроде инта.
func (byref *T) M()
func (byval T) M()
> Он еще не сдох?
С чего вдруг. Пусть живёт, хороший дядька.
Ну ричи воткнул пару лет назад, а этот, сука, еще и языки разрабатывает.
>аргумент может приходить в метод по ссылке и по значению.
this?
— У вас шарики есть.
— Есть.
— Хорошие?
— Нет, плохие.
— Дырявые?
— Нет — не дырявые.
— Плохо дуются?
— Нет, хорошо.
— Не яркие?
— Яркие.
— А почему, плохие?
— Не скачут Не радуют...
>Жаль только поехавший
:))
Пишу на крестах - красота: функции, переменные, классы. Пишу на жс - функции, перем... this, this, this! This this! За this что?! this отвлекает от сути.
Хотя, можно использовать синонимы, это да.
- А если не найдешь?
- o SHI...
На ГК уже обсуждали https://github.com/jterrace/js.js/ - SpiderMonjey на жс.
А ещё есть как минимум https://github.com/NeilFraser/JS-Interpreter (рукописная питушня?), только там не до конца реализовано.