Skip to content

Commit c2ad22b

Browse files
authored
Enable/Disable rendering of objects (#33)
* allow enabling/disabling rendering of objects * enable rendering by default
1 parent e64e9af commit c2ad22b

File tree

3 files changed

+36
-9
lines changed

3 files changed

+36
-9
lines changed

source/objects/RenderObject.cpp

+30-9
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ RenderObject::RenderObject(VkDevice& device, VkPhysicalDevice& physicalDevice,
2020
: device(device), physicalDevice(physicalDevice), descriptorSetLayout(descriptorSetLayout),
2121
texture(std::move(texture)), specularMap(std::move(specularMap)), model(std::move(model)),
2222
position(0, 0, 0), scale(1, 1, 1), rotation(0, 0, 0),
23-
transformUniform(std::make_unique<UniformBuffer>(device, physicalDevice, MAX_FRAMES_IN_FLIGHT, sizeof(TransformUniform)))
23+
transformUniform(std::make_unique<UniformBuffer>(device, physicalDevice, MAX_FRAMES_IN_FLIGHT, sizeof(TransformUniform))),
24+
doRendering(false)
2425
{
2526
createDescriptorPool();
2627
createDescriptorSets();
@@ -33,13 +34,23 @@ RenderObject::~RenderObject()
3334

3435
void RenderObject::draw(const VkCommandBuffer& commandBuffer, const VkPipelineLayout& pipelineLayout, const uint32_t currentFrame) const
3536
{
37+
if (!doRendering)
38+
{
39+
return;
40+
}
41+
3642
vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 1, 1, &descriptorSets[currentFrame], 0, nullptr);
3743

3844
model->draw(commandBuffer);
3945
}
4046

4147
void RenderObject::updateUniformBuffer(const uint32_t currentFrame, const VkExtent2D& swapChainExtent, const std::shared_ptr<Camera>& camera) const
4248
{
49+
if (!doRendering)
50+
{
51+
return;
52+
}
53+
4354
auto projection = glm::perspective(glm::radians(45.0f),
4455
static_cast<float>(swapChainExtent.width) / static_cast<float>(swapChainExtent.height),
4556
0.1f, 1000.0f);
@@ -108,22 +119,32 @@ void RenderObject::createDescriptorSets()
108119
}
109120
}
110121

111-
void RenderObject::setPosition(glm::vec3 position_)
122+
void RenderObject::setPosition(const glm::vec3 position)
123+
{
124+
this->position = position;
125+
}
126+
127+
void RenderObject::setScale(const glm::vec3 scale)
128+
{
129+
this->scale = scale;
130+
}
131+
132+
void RenderObject::setScale(float scale)
112133
{
113-
position = position_;
134+
this->scale = { scale, scale, scale };
114135
}
115136

116-
void RenderObject::setScale(glm::vec3 scale_)
137+
void RenderObject::setRotation(const glm::vec3 rotation)
117138
{
118-
scale = scale_;
139+
this->rotation = rotation;
119140
}
120141

121-
void RenderObject::setScale(float scale_)
142+
void RenderObject::enableRendering()
122143
{
123-
scale = { scale_, scale_, scale_ };
144+
doRendering = true;
124145
}
125146

126-
void RenderObject::setRotation(glm::vec3 rotation_)
147+
void RenderObject::disableRendering()
127148
{
128-
rotation = rotation_;
149+
doRendering = false;
129150
}

source/objects/RenderObject.h

+5
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ class RenderObject {
2626
void setScale(float scale);
2727
void setRotation(glm::vec3 rotation);
2828

29+
void enableRendering();
30+
void disableRendering();
31+
2932
private:
3033
void createDescriptorPool();
3134
void createDescriptorSets();
@@ -47,6 +50,8 @@ class RenderObject {
4750
glm::vec3 rotation;
4851

4952
std::unique_ptr<UniformBuffer> transformUniform;
53+
54+
bool doRendering;
5055
};
5156

5257

tests/cube/main.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ int main()
2525
const auto model = renderer.loadModel("assets/models/square.glb");
2626

2727
const auto object = renderer.loadRenderObject(texture, specularMap, model);
28+
object->enableRendering();
2829
glm::vec3 position = {0, -5, 0};
2930
object->setPosition(position);
3031

0 commit comments

Comments
 (0)