-
-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathTexturedCubeApp.h
More file actions
83 lines (62 loc) · 2.38 KB
/
TexturedCubeApp.h
File metadata and controls
83 lines (62 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/******************************************************************************
Copyright 2019 Evgeny Gorodetskiy
Licensed under the Apache License, Version 2.0 (the "License"),
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*******************************************************************************
FILE: TexturedCubeApp.h
Tutorial demonstrating textured cube rendering with Methane graphics API
******************************************************************************/
#pragma once
#include <Methane/Kit.h>
#include <Methane/UserInterface/App.hpp>
namespace hlslpp // NOSONAR
{
#pragma pack(push, 16)
#include "Shaders/TexturedCubeUniforms.h" // NOSONAR
#pragma pack(pop)
}
namespace Methane::Tutorials
{
namespace gfx = Methane::Graphics;
namespace rhi = Methane::Graphics::Rhi;
struct TexturedCubeFrame final : Graphics::AppFrame
{
rhi::ProgramBindings program_bindings;
rhi::IProgramArgumentBinding* uniforms_binding_ptr = nullptr;
rhi::RenderCommandList render_cmd_list;
rhi::CommandListSet execute_cmd_list_set;
using gfx::AppFrame::AppFrame;
};
using UserInterfaceApp = UserInterface::App<TexturedCubeFrame>;
class TexturedCubeApp final // NOSONAR - destructor required
: public UserInterfaceApp
{
public:
TexturedCubeApp();
~TexturedCubeApp() override;
// GraphicsApp overrides
void Init() override;
bool Resize(const gfx::FrameSize& frame_size, bool is_minimized) override;
bool Update() override;
bool Render() override;
protected:
// IContextCallback override
void OnContextReleased(rhi::IContext& context) override;
private:
bool Animate(double elapsed_seconds, double delta_seconds);
hlslpp::Uniforms m_shader_uniforms { };
gfx::Camera m_camera;
rhi::RenderState m_render_state;
rhi::BufferSet m_vertex_buffer_set;
rhi::Buffer m_index_buffer;
rhi::Texture m_cube_texture;
rhi::Sampler m_texture_sampler;
};
} // namespace Methane::Tutorials