FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GLKeeper/src/AnimatingMeshRenderer.cpp at main · codenamecpp/GLKeeper · GitHub
codenamecpp
/
GLKeeper
Public
Notifications
You must be signed in to change notification settings
Fork
4
Star
40
Code
Issues
0
Pull requests
0
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Security and quality
Insights
Expand file tree
Breadcrumbs
GLKeeper
/
src
/
AnimatingMeshRenderer.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
83 lines (66 loc) · 2.48 KB
Breadcrumbs
GLKeeper
/
src
/
AnimatingMeshRenderer.cpp
Copy path
File metadata and controls
83 lines (66 loc) · 2.48 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#
include
"
stdafx.h
"
#
include
"
AnimatingMeshRenderer.h
"
#
include
"
GameRenderManager.h
"
#
include
"
GameWorld.h
"
#
include
"
ShadersManager.h
"
bool
AnimatingMeshRenderer::Initialize
()
{
mShaderProgram
=
gShadersManager
.
GetProgramOfType
<ShaderProgram_BlendFrames>(
"
mesh_blend_frames
"
);
cxx_assert
(
mShaderProgram
);
if
(
mShaderProgram
==
nullptr
)
{
gConsole
.
LogMessage
(eLogLevel_Warning,
"
Cannot load mesh_blend_frames shader program
"
);
return
false
;
}
mShaderProgram
->
InitRenderData
();
return
true
;
}
void
AnimatingMeshRenderer::Shutdown
()
{
}
void
AnimatingMeshRenderer::BeginFrame
(Camera& camera)
{
mShaderProgram
->
SetViewProjectionMatrix
(camera.
mViewProjectionMatrix
);
}
void
AnimatingMeshRenderer::EndFrame
()
{
}
void
AnimatingMeshRenderer::BeginBatch
()
{
mShaderProgram
->
BindProgram
();
}
void
AnimatingMeshRenderer::EndBatch
()
{
}
void
AnimatingMeshRenderer::RenderInstance
(eRenderPass currentPass, AnimatingMeshObject& object)
{
MeshAsset* meshAsset = object.
mMeshAsset
;
cxx_assert
(meshAsset);
if
(!meshAsset->
IsRenderDataInited
())
{
meshAsset->
InitRenderData
();
}
mShaderProgram
->
SetMixFrames
(object.
mAnimState
.
mFramesMixFactor
);
mShaderProgram
->
SetModelMatrix
(object.
mTransformation
);
//
bind indices
gRenderDevice
.
BindIndexBuffer
(meshAsset->
GetGpuIndexBuffer
());
AnimVertex3D_Format vertexDefs;
for
(
const
MeshAsset::SubMesh& currentSubMesh: meshAsset->
GetSubMeshList
())
{
const
SurfaceMaterial& renderMaterial = meshAsset->
GetRenderMaterial
(currentSubMesh.
mMaterialIndex
);
//
filter out submeshes depending on current render pass
if
(currentPass == eRenderPass_Translucent && renderMaterial.
IsOpaque
())
continue
;
if
(currentPass == eRenderPass_Opaque && !renderMaterial.
IsOpaque
())
continue
;
renderMaterial.
BindMaterial
(*
mShaderProgram
);
int
frame0 = object.
mAnimState
.
mCurrFrame
;
int
frame1 = object.
ComputeNextAnimationFrame
();
//
prepare vertex streams definition
vertexDefs.
Setup
(currentSubMesh.
mGpuVBufferOffset
, currentSubMesh.
mFrameVerticesCount
, meshAsset->
GetAnimFramesCount
(), frame0, frame1);
gRenderDevice
.
BindVertexBuffer
(meshAsset->
GetGpuVertexBuffer
(), vertexDefs);
gRenderDevice
.
RenderIndexedPrimitives
(ePrimitiveType_Triangles, eIndicesType_i32,
currentSubMesh.
mGpuIBufferOffset
,
currentSubMesh.
mTris
.
size
() *
3
);
}
}
Back
|
FazBrowse Home
|
New Git URL