-
-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathCubeMapArrayApp.h
More file actions
91 lines (68 loc) · 2.54 KB
/
CubeMapArrayApp.h
File metadata and controls
91 lines (68 loc) · 2.54 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
84
85
86
87
88
89
90
91
/******************************************************************************
Copyright 2022 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: CubeMapArrayApp.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/CubeMapArrayUniforms.h" // NOSONAR
#pragma pack(pop)
}
namespace Methane::Tutorials
{
namespace gfx = Methane::Graphics;
namespace rhi = Methane::Graphics::Rhi;
struct CubeMapArrayFrame final
: Graphics::AppFrame
{
struct Bindings
{
rhi::ProgramBindings program_bindings;
rhi::IProgramArgumentBinding* uniforms_argument_binding_ptr;
};
Bindings cube;
Bindings sky_box;
rhi::RenderCommandList render_cmd_list;
rhi::CommandListSet execute_cmd_list_set;
using gfx::AppFrame::AppFrame;
};
using UserInterfaceApp = UserInterface::App<CubeMapArrayFrame>;
class CubeMapArrayApp final // NOSONAR - destructor required
: public UserInterfaceApp
{
public:
CubeMapArrayApp();
~CubeMapArrayApp() 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);
using TexturedMeshBuffers = gfx::TexturedMeshBuffers<hlslpp::Uniforms>;
hlslpp::float4x4 m_model_matrix;
gfx::Camera m_camera;
rhi::RenderState m_render_state;
rhi::Sampler m_texture_sampler;
Ptr<TexturedMeshBuffers> m_cube_buffers_ptr;
gfx::SkyBox m_sky_box;
};
} // namespace Methane::Tutorials