本文整理汇总了C++中renderQuad函数的典型用法代码示例。如果您正苦于以下问题:C++ renderQuad函数的具体用法?C++ renderQuad怎么用?C++ renderQuad使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了renderQuad函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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();
}
开发者ID:DX94,项目名称:Enigma-Studio-3,代码行数:31,代码来源:deferredrenderer.cpp
示例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;
}
开发者ID:alvatar,项目名称:smartmatter,代码行数:57,代码来源:depthdarkening.cpp
示例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;
}
开发者ID:151706061,项目名称:Voreen,代码行数:56,代码来源:multiscale.cpp
示例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);
}
开发者ID:BackupTheBerlios,项目名称:gltron-svn,代码行数:14,代码来源:trails_buffered.c
示例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);
}
开发者ID:kbladin,项目名称:Simple_Graphics_Engine,代码行数:25,代码来源:light_source.cpp
示例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;
}
开发者ID:bsmr-opengl,项目名称:voreen,代码行数:25,代码来源:gabor.cpp
示例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;
}
开发者ID:151706061,项目名称:Voreen,代码行数:33,代码来源:imageprocessorbypassable.cpp
示例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;
}
开发者ID:MKLab-ITI,项目名称:gnorasi,代码行数:35,代码来源:renderloopfinalizer.cpp
示例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;
}
开发者ID:DoumbiaAmadou,项目名称:Voreen,代码行数:29,代码来源:toucheventsimulator.cpp
示例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;
}
开发者ID:molsimmsu,项目名称:3mview,代码行数:34,代码来源:renderloopinitiator.cpp
示例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;
}
开发者ID:bsmr-opengl,项目名称:voreen,代码行数:29,代码来源:fade.cpp
示例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;
}
开发者ID:bsmr-opengl,项目名称:voreen,代码行数:60,代码来源:tonemapping.cpp
示例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);
}
开发者ID:enigmastudio,项目名称:Enigma-Studio-4,代码行数:26,代码来源:deferredrenderer.cpp
示例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;
}
开发者ID:151706061,项目名称:Voreen,代码行数:31,代码来源:imagethreshold.cpp
示例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();
}
开发者ID:DX94,项目名称:Enigma-Studio-3,代码行数:35,代码来源:deferredrenderer.cpp
示例16: setGlobalShaderParameters
void StereoMeshEntryExitPoints::jitterEntryPoints() {
shaderProgramJitter_->activate();
tgt::Camera cam = camera_.get();
setGlobalShaderParameters(shaderProgramJitter_, &cam);
// bind texture
TextureUnit entryUnit, entryDepthUnit, exitUnit;
// bind entry points texture and depth texture (have been rendered to temporary port)
tmpPort_.bindColorTexture(entryUnit.getEnum());
shaderProgramJitter_->setUniform("entryPoints_", entryUnit.getUnitNumber());
tmpPort_.bindDepthTexture(entryDepthUnit.getEnum());
shaderProgramJitter_->setUniform("entryPointsDepth_", entryDepthUnit.getUnitNumber());
tmpPort_.setTextureParameters(shaderProgramJitter_, "entryParameters_");
// bind exit points texture
exitPort_.bindColorTexture(exitUnit.getEnum());
shaderProgramJitter_->setUniform("exitPoints_", exitUnit.getUnitNumber());
exitPort_.setTextureParameters(shaderProgramJitter_, "exitParameters_");
shaderProgramJitter_->setUniform("stepLength_", jitterStepLength_.get());
entryPort_.activateTarget("jitteredEntryParams");
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// render screen aligned quad
renderQuad();
shaderProgramJitter_->deactivate();
}
开发者ID:molsimmsu,项目名称:3mview,代码行数:31,代码来源:stereomeshentryexitpoints.cpp
示例17: setGlobalShaderParameters
void SimpleRaycaster::process() {
// activate and clear output render target
outport_.activateTarget();
outport_.clearTarget();
// retrieve shader from shader property
tgt::Shader* shader = shader_.getShader();
if (!shader || !shader->isLinked()) {
outport_.deactivateTarget();
return;
}
// activate shader and set common uniforms
shader->activate();
tgt::Camera cam = camera_.get();
setGlobalShaderParameters(shader, &cam);
// bind entry and exit params and pass texture units to the shader
TextureUnit entryUnit, entryDepthUnit, exitUnit, exitDepthUnit;
entryPort_.bindTextures(entryUnit, entryDepthUnit);
shader->setUniform("entryPoints_", entryUnit.getUnitNumber());
shader->setUniform("entryPointsDepth_", entryDepthUnit.getUnitNumber());
entryPort_.setTextureParameters(shader, "entryParameters_");
exitPort_.bindTextures(exitUnit, exitDepthUnit);
shader->setUniform("exitPoints_", exitUnit.getUnitNumber());
shader->setUniform("exitPointsDepth_", exitDepthUnit.getUnitNumber());
exitPort_.setTextureParameters(shader, "exitParameters_");
// bind volume texture and pass it to the shader
std::vector<VolumeStruct> volumeTextures;
TextureUnit volUnit;
volumeTextures.push_back(VolumeStruct(
volumePort_.getData(),
&volUnit,
"volume_",
"volumeStruct_",
volumePort_.getTextureClampModeProperty().getValue(),
tgt::vec4(volumePort_.getTextureBorderIntensityProperty().get()),
volumePort_.getTextureFilterModeProperty().getValue())
);
bindVolumes(shader, volumeTextures, &cam, lightPosition_.get());
// bind transfer function and pass it to the shader
TextureUnit transferUnit;
if (transferFunc_.get()) {
transferUnit.activate();
transferFunc_.get()->bind();
transferFunc_.get()->setUniform(shader, "transferFunc_", "transferFuncTex_", transferUnit.getUnitNumber());
}
// render screen aligned quad
renderQuad();
// clean up
shader->deactivate();
outport_.deactivateTarget();
TextureUnit::setZeroUnit();
LGL_ERROR;
}
开发者ID:molsimmsu,项目名称:3mview,代码行数:60,代码来源:simpleraycaster.cpp
示例18: tgtAssert
void VolumeRaycaster::rescaleRendering(RenderPort& srcPort, RenderPort& destPort) {
// activate and clear output render target
destPort.activateTarget();
destPort.clearTarget();
// activate shader and set uniforms
tgtAssert(rescaleShader_, "bypass shader not loaded");
rescaleShader_->activate();
setGlobalShaderParameters(rescaleShader_, 0, destPort.getSize());
// bind input rendering to texture units
tgt::TextureUnit colorUnit, depthUnit;
srcPort.bindTextures(colorUnit.getEnum(), depthUnit.getEnum(), GL_LINEAR);
srcPort.setTextureParameters(rescaleShader_, "texParams_");
rescaleShader_->setUniform("colorTex_", colorUnit.getUnitNumber());
rescaleShader_->setUniform("depthTex_", depthUnit.getUnitNumber());
// render screen aligned quad
renderQuad();
// cleanup
rescaleShader_->deactivate();
destPort.deactivateTarget();
TextureUnit::setZeroUnit();
// check for OpenGL errors
LGL_ERROR;
}
开发者ID:151706061,项目名称:Voreen,代码行数:28,代码来源:volumeraycaster.cpp
示例19: setGlobalShaderParameters
void RenderColorCube::fillEntryPoints(tgt::RenderTarget *firstBackTarget,
tgt::RenderTarget *firstFrontTarget,
tgt::RenderTarget *output,
const tgt::Geometry *geometry,
tgt::Camera *camera)
{
MatStack.matrixMode(tgt::MatrixStack::PROJECTION);
MatStack.pushMatrix();
MatStack.loadIdentity();
MatStack.matrixMode(tgt::MatrixStack::MODELVIEW);
MatStack.pushMatrix();
MatStack.loadIdentity();
shaderInsideVolume_->activate();
setGlobalShaderParameters(shaderInsideVolume_, camera, output->getSize());
// bind texture
tgt::TextureUnit firstFrontUnit, firstFrontDepthUnit, firstBackUnit, firstBackDepthUnit;
// bind firstFront points texture and depth texture
firstFrontTarget->bindColorTexture(firstFrontUnit.getEnum());
shaderInsideVolume_->setUniform("firstFront_", firstFrontUnit.getUnitNumber());
firstFrontTarget->bindDepthTexture(firstFrontDepthUnit.getEnum());
shaderInsideVolume_->setUniform("firstFrontDepth_", firstFrontDepthUnit.getUnitNumber());
firstFrontTarget->setTextureParameters(shaderInsideVolume_, "firstFrontParameters_");
// bind firstBack points texture
firstBackTarget->bindColorTexture(firstBackUnit.getEnum());
shaderInsideVolume_->setUniform("firstBack_", firstBackUnit.getUnitNumber());
firstBackTarget->bindDepthTexture(firstBackDepthUnit.getEnum());
//shaderInsideVolume_->setUniform("firstBackDepth_", firstBackDepthUnit.getUnitNumber());
firstBackTarget->setTextureParameters(shaderInsideVolume_, "firstBackParameters_");
shaderInsideVolume_->setUniform("near_", camera->getNearDist());
shaderInsideVolume_->setUniform("far_", camera->getFarDist());
tgt::BoundingBox bounds = geometry->getBoundingBox(false);
shaderInsideVolume_->setUniform("llf_", bounds.getLLF());
shaderInsideVolume_->setUniform("urb_", bounds.getURB());
glm::mat4 worldToTextureMatrix = glm::inverse(geometry->getTransformationMatrix());
shaderInsideVolume_->setUniform("worldToTexture_", worldToTextureMatrix);
output->activateTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// render screen aligned quad
renderQuad();
shaderInsideVolume_->deactivate();
output->deactivateTarget();
MatStack.matrixMode(tgt::MatrixStack::PROJECTION);
MatStack.popMatrix();
MatStack.matrixMode(tgt::MatrixStack::MODELVIEW);
MatStack.popMatrix();
LGL_ERROR;
}
开发者ID:alvin-me,项目名称:MIVT,代码行数:59,代码来源:rendercolorcube.cpp
示例20: getAlpha
void Rectangle3DOverlay::render(RenderArgs* args) {
if (!_visible) {
return; // do nothing if we're not visible
}
float alpha = getAlpha();
xColor color = getColor();
const float MAX_COLOR = 255.0f;
glm::vec4 rectangleColor(color.red / MAX_COLOR, color.green / MAX_COLOR, color.blue / MAX_COLOR, alpha);
glm::vec3 position = getPosition();
glm::vec2 dimensions = getDimensions();
glm::vec2 halfDimensions = dimensions * 0.5f;
glm::quat rotation = getRotation();
auto batch = args->_batch;
if (batch) {
Transform transform;
transform.setTranslation(position);
transform.setRotation(rotation);
batch->setModelTransform(transform);
auto geometryCache = DependencyManager::get<GeometryCache>();
if (getIsSolid()) {
glm::vec3 topLeft(-halfDimensions.x, -halfDimensions.y, 0.0f);
glm::vec3 bottomRight(halfDimensions.x, halfDimensions.y, 0.0f);
geometryCache->bindSimpleProgram(*batch);
geometryCache->renderQuad(*batch, topLeft, bottomRight, rectangleColor);
} else {
geometryCache->bindSimpleProgram(*batch, false, false, false, true, true);
if (getIsDashedLine()) {
glm::vec3 point1(-halfDimensions.x, -halfDimensions.y, 0.0f);
glm::vec3 point2(halfDimensions.x, -halfDimensions.y, 0.0f);
glm::vec3 point3(halfDimensions.x, halfDimensions.y, 0.0f);
glm::vec3 point4(-halfDimensions.x, halfDimensions.y, 0.0f);
geometryCache->renderDashedLine(*batch, point1, point2, rectangleColor);
geometryCache->renderDashedLine(*batch, point2, point3, rectangleColor);
geometryCache->renderDashedLine(*batch, point3, point4, rectangleColor);
geometryCache->renderDashedLine(*batch, point4, point1, rectangleColor);
} else {
if (halfDimensions != _previousHalfDimensions) {
QVector<glm::vec3> border;
border << glm::vec3(-halfDimensions.x, -halfDimensions.y, 0.0f);
border << glm::vec3(halfDimensions.x, -halfDimensions.y, 0.0f);
border << glm::vec3(halfDimensions.x, halfDimensions.y, 0.0f);
border << glm::vec3(-halfDimensions.x, halfDimensions.y, 0.0f);
border << glm::vec3(-halfDimensions.x, -halfDimensions.y, 0.0f);
geometryCache->updateVertices(_geometryCacheID, border, rectangleColor);
_previousHalfDimensions = halfDimensions;
}
geometryCache->renderVertices(*batch, gpu::LINE_STRIP, _geometryCacheID);
}
}
}
}
开发者ID:AlexanderOtavka,项目名称:hifi,代码行数:59,代码来源:Rectangle3DOverlay.cpp
注:本文中的renderQuad函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论