本文整理汇总了C++中renderQuad函数的典型用法代码示例。如果您正苦于以下问题:C++ renderQuad函数的具体用法?C++ renderQuad怎么用?C++ renderQuad使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了renderQuad函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: renderQuad
void eDeferredRenderer::_visualizeGeometryBuffer(const eRect &area) const
{
eStateManager::push();
eStateManager::bindVertexShader(m_vsQuad);
eStateManager::bindPixelShader(m_psQuad);
eStateManager::setCullingMode(eCULLING_NONE);
eStateManager::setTextureAddressMode(0, eTEXADDRMODE_CLAMP);
eStateManager::setCap(eCAP_ZBUFFER, eFALSE);
eStateManager::setCap(eCAP_BLENDING, eFALSE);
const eInt w = area.getWidth();
const eInt h = area.getHeight();
// Image at top left.
eStateManager::bindTexture(0, m_specularRt);
// renderQuad(eRect(0, h/2, w/2, h-1), area.getDimension());
// Image at top right.
eStateManager::bindTexture(0, m_diffuseRt);
renderQuad(eRect(w/2, h/2, w-1, h-1), area.getDimension());
// Image at bottom left.
eStateManager::bindTexture(0, m_normalsRt);
renderQuad(eRect(0, 0, w/2, h/2), area.getDimension());
// Image at bottom right.
eStateManager::bindTexture(0, m_positionRt);
renderQuad(eRect(w/2, 0, w-1, h/2), area.getDimension());
eStateManager::pop();
}
示例2: glClear
void DepthDarkening::process() {
privatePort_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if (!interactionMode())
analyzeDepthBuffer(&inport_);
// since the blurring is implemented as a separable filter,
// two rendering passes are needed
// first horizontal pass
TextureUnit colorUnit, depthUnit0, depthUnit1;
inport_.bindTextures(colorUnit.getEnum(), depthUnit0.getEnum());
inport_.bindDepthTexture(depthUnit1.getEnum());
// initialize shader
program_->activate();
setGlobalShaderParameters(program_);
program_->setUniform("colorTex_", colorUnit.getUnitNumber());
program_->setUniform("depthTex0_", depthUnit0.getUnitNumber());
program_->setUniform("depthTex1_", depthUnit1.getUnitNumber());
inport_.setTextureParameters(program_, "texParams_");
program_->setUniform("sigma_", sigma_.get());
program_->setUniform("lambda_", lambda_.get());
program_->setUniform("minDepth_", minDepth_.get());
program_->setUniform("maxDepth_", maxDepth_.get());
program_->setUniform("dir_", tgt::vec2(1.0,0.0));
renderQuad();
program_->deactivate();
LGL_ERROR;
// second vertical pass
outport_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
inport_.bindColorTexture(colorUnit.getEnum());
privatePort_.bindDepthTexture(depthUnit0.getEnum());
// initialize shader
program_->activate();
setGlobalShaderParameters(program_);
program_->setUniform("colorTex_", colorUnit.getUnitNumber());
program_->setUniform("depthTex0_", depthUnit0.getUnitNumber());
program_->setUniform("depthTex1_", depthUnit1.getUnitNumber());
inport_.setTextureParameters(program_, "texParams_");
program_->setUniform("sigma_", sigma_.get());
program_->setUniform("lambda_", lambda_.get());
program_->setUniform("minDepth_", minDepth_.get());
program_->setUniform("maxDepth_", maxDepth_.get());
program_->setUniform("dir_", tgt::vec2(0.0,1.0));
renderQuad();
program_->deactivate();
outport_.deactivateTarget();
LGL_ERROR;
}
示例3: glDepthFunc
void MultiScale::process() {
inport_.bindTextures(GL_TEXTURE0, GL_TEXTURE1);
LGL_ERROR;
// initialize shader
program_->activate();
program_->setUniform("colorTex_", 0);
program_->setUniform("depthTex_", 1);
program_->setIgnoreUniformLocationError(true);
program_->setUniform("colorTexParameters_.dimensions_", tgt::vec2(inport_.getSize()));
program_->setUniform("colorTexParameters_.dimensionsRCP_", tgt::vec2(1.0f) / tgt::vec2(inport_.getSize()));
program_->setUniform("colorTexParameters_.matrix_", tgt::mat4::identity);
program_->setUniform("depthTexParameters_.dimensions_", tgt::vec2(inport_.getSize()));
program_->setUniform("depthTexParameters_.dimensionsRCP_", tgt::vec2(1.0f) / tgt::vec2(inport_.getSize()));
program_->setUniform("depthTexParameters_.matrix_", tgt::mat4::identity);
program_->setIgnoreUniformLocationError(false);
MatStack.matrixMode(tgt::MatrixStack::MODELVIEW);
glDepthFunc(GL_ALWAYS);
if (outport1_.isReady()) {
outport1_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
applyScalingMatrix(scalingMode1_.getValue(), &inport_, &outport1_);
renderQuad();
outport1_.deactivateTarget();
}
if (outport2_.isReady()) {
outport2_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
applyScalingMatrix(scalingMode2_.getValue(), &inport_, &outport2_);
renderQuad();
outport2_.deactivateTarget();
}
if (outport3_.isReady()) {
outport3_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
applyScalingMatrix(scalingMode3_.getValue(), &inport_, &outport3_);
renderQuad();
outport3_.deactivateTarget();
}
if (outport4_.isReady()) {
outport4_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
applyScalingMatrix(scalingMode4_.getValue(), &inport_, &outport4_);
renderQuad();
outport4_.deactivateTarget();
}
glDepthFunc(GL_LESS);
MatStack.loadIdentity();
program_->deactivate();
glActiveTexture(GL_TEXTURE0);
LGL_ERROR;
}
示例4: drawTrails
void drawTrails(QuadBuffer *q, int *index) {
int i;
if(index == NULL) {
for(i = 0; i < q->current; i++)
renderQuad(q->quads + i);
} else {
for(i = 0; i < q->current; i++) {
/* printf("drawing quad %d\n", index[i]); */
renderQuad(q->quads + index[i] );
}
}
glDisable(GL_TEXTURE_2D);
}
示例5: absoluteTransform
void PointLightSource::render(const UsefulRenderData& render_data)
{
// If we are inside the sphere affected by the light source, render a full
// quad. Otherwize just render the light sphere
glm::vec4 position_world_space = glm::vec4(absoluteTransform()[3]);
glm::vec3 position_view_space =
glm::vec3(render_data.camera.viewTransform() * position_world_space);
float distance_to_light_source = glm::length(position_view_space);
// Probably not the best way of handling rescaled light sources,
// but works for now..
glm::vec3 scale;
glm::quat rotation;
glm::vec3 translation;
glm::vec3 skew;
glm::vec4 perspective;
glm::decompose(
absoluteTransform(), scale, rotation, translation, skew,perspective);
float transform_scale = scale.x;
if (distance_to_light_source < _sphere_scale * transform_scale)
renderQuad(render_data);
else
renderSphere(render_data);
}
示例6: glClear
void Gabor::process() {
outport_.resize(tgt::ivec2(resolution_.get(), resolution_.get()));
// activate and clear output render target
outport_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// activate shader and set uniforms:
program_->activate();
setGlobalShaderParameters(program_);
program_->setUniform("orientation_", (angle_.get()/360.0f)*2.0f*tgt::PIf);
program_->setUniform("wavelength_", wavelength_.get());
program_->setUniform("offset_", offset_.get());
program_->setUniform("sigma_", sigma_.get());
program_->setUniform("aRatio_", aspectRatio_.get());
//program_->setUniform("aspectRatio_", aspectRatio_.get());
// render screen aligned quad:
glDepthFunc(GL_ALWAYS);
renderQuad();
glDepthFunc(GL_LESS);
program_->deactivate();
outport_.deactivateTarget();
LGL_ERROR;
}
示例7: tgtAssert
/*
* Pass the image from inport to outport without changes
*/
void ImageProcessorBypassable::bypass(RenderPort* inport, RenderPort* outport) {
tgtAssert(inport && outport, "null pointer passed");
// activate and clear output render target
outport->activateTarget();
outport->clearTarget();
// bind input rendering to texture units
TextureUnit colorUnit, depthUnit;
inport->bindTextures(colorUnit.getEnum(), depthUnit.getEnum());
// activate shader and set uniforms
tgtAssert(bypassProgram_, "bypass shader not loaded");
bypassProgram_->activate();
setGlobalShaderParameters(bypassProgram_);
inport->setTextureParameters(bypassProgram_, "texParams_");
bypassProgram_->setUniform("colorTex_", colorUnit.getUnitNumber());
bypassProgram_->setUniform("depthTex_", depthUnit.getUnitNumber());
// render screen aligned quad
renderQuad();
// cleanup
bypassProgram_->deactivate();
outport->deactivateTarget();
TextureUnit::setZeroUnit();
// check for OpenGL errors
LGL_ERROR;
}
示例8: glClear
void RenderLoopFinalizer::process() {
if (loopOutport_.getLoopIteration() == loopOutport_.getNumLoopIterations()-1) {
// last iteration: write input image to outport
outport_.activateTarget();
}
else {
// loop iteration: write input image to loop port
loopOutport_.activateTarget();
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
TextureUnit colorUnit, depthUnit;
inport_.bindTextures(colorUnit.getEnum(), depthUnit.getEnum());
LGL_ERROR;
// initialize shader
shaderPrg_->activate();
// set common uniforms used by all shaders
setGlobalShaderParameters(shaderPrg_);
// pass the remaining uniforms to the shader
shaderPrg_->setUniform("colorTex_", colorUnit.getUnitNumber());
shaderPrg_->setUniform("depthTex_", depthUnit.getUnitNumber());
inport_.setTextureParameters(shaderPrg_, "texParams_");
renderQuad();
shaderPrg_->deactivate();
outport_.deactivateTarget();
TextureUnit::setZeroUnit();
LGL_ERROR;
}
示例9: tgtAssert
void TouchEventSimulator::process() {
// activate and clear output render target
outport_.activateTarget();
outport_.clearTarget();
// bind input rendering to texture units
tgt::TextureUnit colorUnit, depthUnit;
inport_.bindTextures(colorUnit.getEnum(), depthUnit.getEnum());
// activate shader and set uniforms
tgtAssert(program_, "bypass shader not loaded");
program_->activate();
setGlobalShaderParameters(program_);
inport_.setTextureParameters(program_, "texParams_");
program_->setUniform("colorTex_", colorUnit.getUnitNumber());
program_->setUniform("depthTex_", depthUnit.getUnitNumber());
// render screen aligned quad
renderQuad();
// cleanup
program_->deactivate();
outport_.deactivateTarget();
tgt::TextureUnit::setZeroUnit();
// check for OpenGL errors
LGL_ERROR;
}
示例10: glClear
void RenderLoopInitiator::process() {
outport_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// activate shader
shader_->activate();
TextureUnit colorUnit, depthUnit;
if (loopInport_.getLoopIteration() == 0) {
// first iteration => copy initial input image to outport
inport_.bindTextures(colorUnit.getEnum(), depthUnit.getEnum());
}
else {
// loop iteration => copy loop input image to outport
loopInport_.bindTextures(colorUnit.getEnum(), depthUnit.getEnum());
}
LGL_ERROR;
// set common uniforms
setGlobalShaderParameters(shader_);
// pass texture parameters to the shader
shader_->setUniform("colorTex_", colorUnit.getUnitNumber());
shader_->setUniform("depthTex_", depthUnit.getUnitNumber());
inport_.setTextureParameters(shader_, "texParams_");
// execute shader
renderQuad();
// clean up
shader_->deactivate();
outport_.deactivateTarget();
LGL_ERROR;
}
示例11: bypass
void Fade::process() {
if (!enableSwitch_.get()){
bypass(&inport_, &outport_);
return;
}
outport_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
TextureUnit colorUnit, depthUnit;
inport_.bindTextures(colorUnit.getEnum(), depthUnit.getEnum());
// intialize shader
program_->activate();
setGlobalShaderParameters(program_);
program_->setUniform("colorTex_", colorUnit.getUnitNumber());
program_->setUniform("depthTex_", depthUnit.getUnitNumber());
inport_.setTextureParameters(program_, "texParams_");
program_->setUniform("fading_", 1-fading_.get());
program_->setUniform("fadeColor_",color_.get());
renderQuad();
program_->deactivate();
outport_.deactivateTarget();
LGL_ERROR;
}
示例12: compile
void ToneMapping::process() {
if (getInvalidationLevel() >= Processor::INVALID_PROGRAM)
compile();
outport_.activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
TextureUnit colorUnit, depthUnit;
inport_.bindColorTexture(colorUnit.getEnum());
if (toneMappingMethod_.get() == "rahman-retinex") {
glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glGenerateMipmapEXT(GL_TEXTURE_2D);
}
inport_.bindDepthTexture(depthUnit.getEnum());
// initialize shader
program_->activate();
setGlobalShaderParameters(program_);
// set uniforms
program_->setUniform("colorTex_", colorUnit.getUnitNumber());
program_->setUniform("depthTex_", depthUnit.getUnitNumber());
inport_.setTextureParameters(program_, "textureParameters_");
// set method specific uniforms
if (toneMappingMethod_.get() == "s-curve") {
program_->setUniform("sigma_", scurveSigma_.get());
program_->setUniform("power_", scurvePower_.get());
}
if (toneMappingMethod_.get() == "rahman-retinex") {
if(rahmanTotalUpdate_ || inport_.hasChanged()){
wTotal_ = 0.0f;
float i = 0.0f;
while(i<rahmanIterations_.get()){
wTotal_ += pow(rahmanIterations_.get() - i + 1, rahmanFrequency_.get());
i++;
}
rahmanTotalUpdate_ = false;
}
//colorUnit.activate();
//glGenerateMipmapEXT(GL_TEXTURE_2D);
program_->setUniform("frequency_", rahmanFrequency_.get());
program_->setUniform("subtractionFactor_", rahmanSubtractionFactor_.get());
program_->setUniform("iterations_", rahmanIterations_.get());
program_->setUniform("maxLevel_", rahmanMaxLevel_.get());
program_->setUniform("wTotal_", wTotal_);
}
renderQuad();
program_->deactivate();
outport_.deactivateTarget();
TextureUnit::setZeroUnit();
LGL_ERROR;
}
示例13: renderQuad
void eDeferredRenderer::_renderAmbientPass(eTexture2d *target, eTexture2d *depthTarget, const eScene &scene, const eRect &area)
{
// calculate the ambient color
eColor ambient;
for (eU32 i=0; i<scene.getLightCount(); i++)
ambient += scene.getLight(i).getAmbient();
// render the ambient light
static eConstBuffer<eVector4, eST_PS> cb;
cb.data = ambient;
eRenderState &rs = eGfx->freshRenderState();
rs.targets[0] = target;
rs.depthTarget = depthTarget;
rs.ps = m_psDefAmbient;
rs.constBufs[eCBI_PASS_AMBIENT] = &cb;
rs.textures[0] = m_rtDiffuse;
rs.textures[3] = m_rtPosition;
rs.textures[4] = m_rtEnvironment;
rs.texFlags[0] = eTMF_CLAMP|eTMF_NEAREST;
rs.texFlags[3] = eTMF_CLAMP|eTMF_NEAREST;
rs.texFlags[4] = eTMF_CLAMP|eTMF_NEAREST;
eGfx->clear(eCM_COLOR, eCOL_YELLOW);
renderQuad(area, area.getSize(), nullptr);
}
示例14: bypass
void ImageThreshold::process() {
if (!enableSwitch_.get()){
bypass(&inport_, &outport_);
return;
}
outport_.activateTarget();
outport_.clearTarget();
TextureUnit colorUnit, depthUnit;
inport_.bindTextures(colorUnit, depthUnit);
// initialize shader
program_->activate();
setGlobalShaderParameters(program_);
program_->setUniform("colorTex_", colorUnit.getUnitNumber());
program_->setUniform("depthTex_", depthUnit.getUnitNumber());
inport_.setTextureParameters(program_, "texParams_");
program_->setUniform("lowerThreshold_", lowerThreshold_.get());
program_->setUniform("upperThreshold_", upperThreshold_.get());
program_->setUniform("lowerMaskColor_", lowerMaskColor_.get());
program_->setUniform("upperMaskColor_", upperMaskColor_.get());
renderQuad();
program_->deactivate();
outport_.deactivateTarget();
TextureUnit::setZeroUnit();
LGL_ERROR;
}
示例15: _renderLightDistance
void eDeferredRenderer::_renderLightPass(eScene &scene, const eCamera &cam, const eRect &area)
{
eStateManager::push();
eStateManager::bindTexture(0, m_diffuseRt);
eStateManager::bindTexture(1, m_normalsRt);
eStateManager::bindTexture(2, m_specularRt);
eStateManager::bindTexture(3, m_positionRt);
eStateManager::bindTexture(4, m_deferredShadowMap);
eStateManager::setTextureFilter(0, eTEXFILTER_NEAREST);
eStateManager::setTextureFilter(1, eTEXFILTER_NEAREST);
eStateManager::setTextureFilter(2, eTEXFILTER_NEAREST);
eStateManager::setTextureFilter(3, eTEXFILTER_NEAREST);
eStateManager::setTextureFilter(4, eTEXFILTER_BILINEAR);
eStateManager::setTextureAddressMode(4, eTEXADDRMODE_CLAMP);
eStateManager::setCap(eCAP_BLENDING, eTRUE);
eStateManager::setBlendModes(eBLEND_ONE, eBLEND_ONE, eBLENDOP_ADD);
eStateManager::bindPixelShader(m_psDefLight);
eStateManager::bindVertexShader(m_vsQuad);
for (eU32 i=0; i<scene.getLightCount(); i++)
{
const eLight &light = scene.getLight(i);
if (light.activateScissor(area.getDimension(), cam))
{
_renderLightDistance(scene, light);
_renderShadowMap(cam, light);
light.activate(m_gfx, cam.getViewMatrix());
renderQuad(area, area.getDimension());
}
}
eStateManager::pop();
}