Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
15288204
Kaydet (Commit)
15288204
authored
May 15, 2014
tarafından
weigao
Kaydeden (comit)
Markus Mohrhard
May 15, 2014
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
modify the coordinate system to world coordinate system
Change-Id: Ib496f33bcd94cac77aef02ddae2c91bb48150252
üst
ec4169a5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
118 additions
and
69 deletions
+118
-69
GL3DRenderer.hxx
chart2/source/view/inc/GL3DRenderer.hxx
+11
-1
GL3DRenderer.cxx
chart2/source/view/main/GL3DRenderer.cxx
+107
-68
No files found.
chart2/source/view/inc/GL3DRenderer.hxx
Dosyayı görüntüle @
15288204
...
@@ -141,6 +141,16 @@ struct TextInfo
...
@@ -141,6 +141,16 @@ struct TextInfo
float
vertex
[
12
];
float
vertex
[
12
];
};
};
typedef
struct
SceneBox
{
float
maxXCoord
;
float
minXCoord
;
float
maxYCoord
;
float
minYCoord
;
float
maxZCoord
;
float
minZCoord
;
}
SceneBox
;
class
OpenGL3DRenderer
class
OpenGL3DRenderer
{
{
public
:
public
:
...
@@ -204,7 +214,6 @@ private:
...
@@ -204,7 +214,6 @@ private:
int
GenerateRoundCornerBar
(
std
::
vector
<
glm
::
vec3
>
&
vertices
,
std
::
vector
<
glm
::
vec3
>
&
normals
,
float
fRadius
,
int
iSubDivY
,
int
GenerateRoundCornerBar
(
std
::
vector
<
glm
::
vec3
>
&
vertices
,
std
::
vector
<
glm
::
vec3
>
&
normals
,
float
fRadius
,
int
iSubDivY
,
int
iSubDivZ
,
float
width
,
float
height
,
float
depth
);
int
iSubDivZ
,
float
width
,
float
height
,
float
depth
);
void
CreateSceneBoxView
();
void
CreateSceneBoxView
();
void
CreateBMPHeader
(
sal_uInt8
*
bmpHeader
,
int
xsize
,
int
ysize
);
void
RenderTexture
(
GLuint
TexID
);
void
RenderTexture
(
GLuint
TexID
);
private
:
private
:
...
@@ -351,6 +360,7 @@ private:
...
@@ -351,6 +360,7 @@ private:
float
m_fHeightWeight
;
float
m_fHeightWeight
;
bool
mbPickingMode
;
bool
mbPickingMode
;
SceneBox
m_SenceBox
;
};
};
}
}
...
...
chart2/source/view/main/GL3DRenderer.cxx
Dosyayı görüntüle @
15288204
...
@@ -20,7 +20,9 @@
...
@@ -20,7 +20,9 @@
#include <StaticGeometry.h>
#include <StaticGeometry.h>
#include "glm/gtc/matrix_inverse.hpp"
#include "glm/gtc/matrix_inverse.hpp"
#define DEBUG_FBO 0
#define DEBUG_FBO 1
#define GL_PI 3.14159f
using
namespace
com
::
sun
::
star
;
using
namespace
com
::
sun
::
star
;
...
@@ -87,6 +89,12 @@ OpenGL3DRenderer::OpenGL3DRenderer():
...
@@ -87,6 +89,12 @@ OpenGL3DRenderer::OpenGL3DRenderer():
GetFreq
();
GetFreq
();
m_RoundBarMesh
.
iMeshSizes
=
0
;
m_RoundBarMesh
.
iMeshSizes
=
0
;
m_SenceBox
.
maxXCoord
=
-
1.0
*
FLT_MAX
;
m_SenceBox
.
minXCoord
=
FLT_MAX
;
m_SenceBox
.
maxYCoord
=
-
1.0
*
FLT_MAX
;
m_SenceBox
.
minYCoord
=
FLT_MAX
;
m_SenceBox
.
maxZCoord
=
-
1.0
*
FLT_MAX
;
m_SenceBox
.
minZCoord
=
FLT_MAX
;
}
}
OpenGL3DRenderer
::~
OpenGL3DRenderer
()
OpenGL3DRenderer
::~
OpenGL3DRenderer
()
...
@@ -332,7 +340,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
...
@@ -332,7 +340,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
glm
::
vec3
actualNormals
[
3
];
glm
::
vec3
actualNormals
[
3
];
std
::
vector
<
unsigned
short
>
indeices
[
5
];
std
::
vector
<
unsigned
short
>
indeices
[
5
];
glm
::
vec3
externSurNormal
;
glm
::
vec3
externSurNormal
;
glm
::
mat4
corrctCoord
=
glm
::
translate
(
glm
::
vec3
(
width
/
2.0
f
,
height
/
2.0
f
-
fRadius
,
depth
/
2.0
f
));
glm
::
mat4
corrctCoord
=
glm
::
translate
(
glm
::
vec3
(
width
/
2.0
f
,
height
/
2.0
f
,
depth
/
2.0
f
-
fRadius
));
m_RoundBarMesh
.
topThreshold
=
topThreshold
;
m_RoundBarMesh
.
topThreshold
=
topThreshold
;
m_RoundBarMesh
.
bottomThreshold
=
bottomThreshold
;
m_RoundBarMesh
.
bottomThreshold
=
bottomThreshold
;
m_RoundBarMesh
.
iMeshStartIndices
=
m_Vertices
.
size
();
m_RoundBarMesh
.
iMeshStartIndices
=
m_Vertices
.
size
();
...
@@ -347,9 +355,9 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
...
@@ -347,9 +355,9 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
actualVerteices
[
k
]
=
glm
::
vec3
(
corrctCoord
*
glm
::
vec4
(
vertices
[
i
+
k
],
1.0
));
actualVerteices
[
k
]
=
glm
::
vec3
(
corrctCoord
*
glm
::
vec4
(
vertices
[
i
+
k
],
1.0
));
actualNormals
[
k
]
=
normals
[
i
+
k
];
actualNormals
[
k
]
=
normals
[
i
+
k
];
}
}
float
max
Y
=
std
::
max
(
std
::
max
(
actualVerteices
[
0
].
y
,
actualVerteices
[
1
].
y
),
actualVerteices
[
2
].
y
);
float
max
Z
=
std
::
max
(
std
::
max
(
actualVerteices
[
0
].
z
,
actualVerteices
[
1
].
z
),
actualVerteices
[
2
].
z
);
float
min
Y
=
std
::
min
(
std
::
min
(
actualVerteices
[
0
].
y
,
actualVerteices
[
1
].
y
),
actualVerteices
[
2
].
y
);
float
min
Z
=
std
::
min
(
std
::
min
(
actualVerteices
[
0
].
z
,
actualVerteices
[
1
].
z
),
actualVerteices
[
2
].
z
);
int
surfaceIndex
=
(
min
Y
>=
topThreshold
-
0.001
)
?
TOP_SURFACE
:
((
maxY
<=
bottomThreshold
+
0.001
)
?
BOTTOM_SURFACE
:
MIDDLE_SURFACE
);
int
surfaceIndex
=
(
min
Z
>=
topThreshold
-
0.001
)
?
TOP_SURFACE
:
((
maxZ
<=
bottomThreshold
+
0.001
)
?
BOTTOM_SURFACE
:
MIDDLE_SURFACE
);
for
(
int
k
=
0
;
k
<
3
;
k
++
)
for
(
int
k
=
0
;
k
<
3
;
k
++
)
{
{
{
{
...
@@ -360,8 +368,8 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
...
@@ -360,8 +368,8 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
//add extern
//add extern
if
((
surfaceIndex
==
TOP_SURFACE
)
||
(
surfaceIndex
==
BOTTOM_SURFACE
))
if
((
surfaceIndex
==
TOP_SURFACE
)
||
(
surfaceIndex
==
BOTTOM_SURFACE
))
{
{
actualVerteices
[
k
].
y
=
0.0
f
;
actualVerteices
[
k
].
z
=
0.0
f
;
externSurNormal
=
(
surfaceIndex
==
TOP_SURFACE
)
?
glm
::
vec3
(
0.0
,
1.0
,
0.0
)
:
glm
::
vec3
(
0.0
,
-
1.0
,
0
.0
);
externSurNormal
=
(
surfaceIndex
==
TOP_SURFACE
)
?
glm
::
vec3
(
0.0
,
0.0
,
1.0
)
:
glm
::
vec3
(
0.0
,
0.0
,
-
1
.0
);
int
tmpSurfaceIndex
=
(
surfaceIndex
==
TOP_SURFACE
)
?
FLAT_TOP_SURFACE
:
FLAT_BOTTOM_SURFACE
;
int
tmpSurfaceIndex
=
(
surfaceIndex
==
TOP_SURFACE
)
?
FLAT_TOP_SURFACE
:
FLAT_BOTTOM_SURFACE
;
PackedVertex
packed
=
{
actualVerteices
[
k
],
externSurNormal
};
PackedVertex
packed
=
{
actualVerteices
[
k
],
externSurNormal
};
SetVertex
(
packed
,
VertexToOutIndex
,
m_Vertices
,
m_Normals
,
indeices
[
tmpSurfaceIndex
]);
SetVertex
(
packed
,
VertexToOutIndex
,
m_Vertices
,
m_Normals
,
indeices
[
tmpSurfaceIndex
]);
...
@@ -381,6 +389,8 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
...
@@ -381,6 +389,8 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float fRadius, int iSubDivY, int
}
}
indeices
[
k
].
clear
();
indeices
[
k
].
clear
();
}
}
vertices
.
clear
();
normals
.
clear
();
VertexToOutIndex
.
clear
();
VertexToOutIndex
.
clear
();
}
}
...
@@ -680,7 +690,7 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
...
@@ -680,7 +690,7 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
PosVecf3
trans
=
{
0.0
f
,
0
,
0.0
};
PosVecf3
trans
=
{
0.0
f
,
0
,
0.0
};
PosVecf3
angle
=
{
0.0
f
,
0.0
f
,
0.0
f
};
PosVecf3
angle
=
{
0.0
f
,
0.0
f
,
0.0
f
};
PosVecf3
scale
=
{
1.0
f
,
m_fHeightWeight
,
1.0
f
};
PosVecf3
scale
=
{
1.0
f
,
1.0
f
,
m_fHeightWeight
};
MoveModelf
(
trans
,
angle
,
scale
);
MoveModelf
(
trans
,
angle
,
scale
);
m_3DMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
m_3DMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
...
@@ -752,7 +762,7 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon)
...
@@ -752,7 +762,7 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon)
Normals3D
*
normalList
=
polygon
.
normalsList
.
front
();
Normals3D
*
normalList
=
polygon
.
normalsList
.
front
();
PosVecf3
trans
=
{
0.0
f
,
0.0
f
,
0.0
};
PosVecf3
trans
=
{
0.0
f
,
0.0
f
,
0.0
};
PosVecf3
angle
=
{
0.0
f
,
0.0
f
,
0.0
f
};
PosVecf3
angle
=
{
0.0
f
,
0.0
f
,
0.0
f
};
PosVecf3
scale
=
{
1.0
f
,
m_fHeightWeight
,
1.0
f
};
PosVecf3
scale
=
{
1.0
f
,
1.0
f
,
m_fHeightWeight
};
MoveModelf
(
trans
,
angle
,
scale
);
MoveModelf
(
trans
,
angle
,
scale
);
glm
::
mat3
normalMatrix
(
m_Model
);
glm
::
mat3
normalMatrix
(
m_Model
);
glm
::
mat3
normalInverseTranspos
=
glm
::
inverseTranspose
(
normalMatrix
);
glm
::
mat3
normalInverseTranspos
=
glm
::
inverseTranspose
(
normalMatrix
);
...
@@ -933,6 +943,12 @@ void OpenGL3DRenderer::AddPolygon3DObjectPoint(float x, float y, float z)
...
@@ -933,6 +943,12 @@ void OpenGL3DRenderer::AddPolygon3DObjectPoint(float x, float y, float z)
float
actualY
=
y
;
float
actualY
=
y
;
float
actualZ
=
z
;
float
actualZ
=
z
;
m_Polygon3DInfo
.
vertices
->
push_back
(
glm
::
vec3
(
actualX
,
actualY
,
actualZ
));
m_Polygon3DInfo
.
vertices
->
push_back
(
glm
::
vec3
(
actualX
,
actualY
,
actualZ
));
m_SenceBox
.
maxXCoord
=
std
::
max
(
m_SenceBox
.
maxXCoord
,
actualX
);
m_SenceBox
.
minXCoord
=
std
::
min
(
m_SenceBox
.
minXCoord
,
actualX
);
m_SenceBox
.
maxYCoord
=
std
::
max
(
m_SenceBox
.
maxYCoord
,
actualY
);
m_SenceBox
.
minYCoord
=
std
::
min
(
m_SenceBox
.
minYCoord
,
actualY
);
m_SenceBox
.
maxZCoord
=
std
::
max
(
m_SenceBox
.
maxZCoord
,
actualZ
);
m_SenceBox
.
minZCoord
=
std
::
min
(
m_SenceBox
.
minZCoord
,
actualZ
);
}
}
void
OpenGL3DRenderer
::
EndAddPolygon3DObjectPoint
()
void
OpenGL3DRenderer
::
EndAddPolygon3DObjectPoint
()
...
@@ -948,10 +964,10 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 nC
...
@@ -948,10 +964,10 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 nC
glm
::
vec4
DirY
=
modelMatrix
*
glm
::
vec4
(
0.0
,
1.0
,
0.0
,
0.0
);
glm
::
vec4
DirY
=
modelMatrix
*
glm
::
vec4
(
0.0
,
1.0
,
0.0
,
0.0
);
glm
::
vec4
DirZ
=
modelMatrix
*
glm
::
vec4
(
0.0
,
0.0
,
1.0
,
0.0
);
glm
::
vec4
DirZ
=
modelMatrix
*
glm
::
vec4
(
0.0
,
0.0
,
1.0
,
0.0
);
m_Extrude3DInfo
.
xScale
=
glm
::
length
(
DirX
);
m_Extrude3DInfo
.
xScale
=
glm
::
length
(
DirX
);
m_Extrude3DInfo
.
yScale
=
glm
::
length
(
Dir
Z
);
m_Extrude3DInfo
.
yScale
=
glm
::
length
(
Dir
Y
);
m_Extrude3DInfo
.
zScale
=
glm
::
length
(
Dir
Y
);
m_Extrude3DInfo
.
zScale
=
glm
::
length
(
Dir
Z
);
glm
::
mat4
transformMatrixInverse
=
glm
::
inverse
(
glm
::
translate
(
glm
::
vec3
(
tranform
)));
glm
::
mat4
transformMatrixInverse
=
glm
::
inverse
(
glm
::
translate
(
glm
::
vec3
(
tranform
)));
glm
::
mat4
scaleMatrixInverse
=
glm
::
inverse
(
glm
::
scale
(
m_Extrude3DInfo
.
xScale
,
m_Extrude3DInfo
.
zScale
,
m_Extrude3DInfo
.
y
Scale
));
glm
::
mat4
scaleMatrixInverse
=
glm
::
inverse
(
glm
::
scale
(
m_Extrude3DInfo
.
xScale
,
m_Extrude3DInfo
.
yScale
,
m_Extrude3DInfo
.
z
Scale
));
m_Extrude3DInfo
.
rotation
=
transformMatrixInverse
*
modelMatrix
*
scaleMatrixInverse
;
m_Extrude3DInfo
.
rotation
=
transformMatrixInverse
*
modelMatrix
*
scaleMatrixInverse
;
//color
//color
...
@@ -969,11 +985,10 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 nC
...
@@ -969,11 +985,10 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 nC
m_Extrude3DInfo
.
xTransform
=
tranform
.
x
;
m_Extrude3DInfo
.
xTransform
=
tranform
.
x
;
m_Extrude3DInfo
.
yTransform
=
tranform
.
y
;
m_Extrude3DInfo
.
yTransform
=
tranform
.
y
;
m_Extrude3DInfo
.
zTransform
=
tranform
.
z
;
m_Extrude3DInfo
.
zTransform
=
tranform
.
z
;
// m_Extrude3DInfo.zTransform = 0;
m_Extrude3DInfo
.
rounded
=
roundedCorner
;
m_Extrude3DInfo
.
rounded
=
roundedCorner
;
if
(
m_Extrude3DInfo
.
rounded
&&
(
m_RoundBarMesh
.
iMeshSizes
==
0
))
if
(
m_Extrude3DInfo
.
rounded
&&
(
m_RoundBarMesh
.
iMeshSizes
==
0
))
{
{
CreateActualRoundedCube
(
0.1
f
,
30
,
30
,
1.0
f
,
1.2
f
,
m_Extrude3DInfo
.
zScale
/
m_Extrude3DInfo
.
xScale
);
CreateActualRoundedCube
(
0.1
f
,
30
,
30
,
1.0
f
,
m_Extrude3DInfo
.
yScale
/
m_Extrude3DInfo
.
xScale
,
1.2
f
);
AddVertexData
(
m_CubeVertexBuf
);
AddVertexData
(
m_CubeVertexBuf
);
AddNormalData
(
m_CubeNormalBuf
);
AddNormalData
(
m_CubeNormalBuf
);
AddIndexData
(
m_CubeElementBuf
);
AddIndexData
(
m_CubeElementBuf
);
...
@@ -982,10 +997,16 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 nC
...
@@ -982,10 +997,16 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool roundedCorner, sal_uInt32 nC
m_Extrude3DInfo
.
startIndex
[
j
]
=
m_RoundBarMesh
.
iElementStartIndices
[
j
];
m_Extrude3DInfo
.
startIndex
[
j
]
=
m_RoundBarMesh
.
iElementStartIndices
[
j
];
m_Extrude3DInfo
.
size
[
j
]
=
m_RoundBarMesh
.
iElementSizes
[
j
];
m_Extrude3DInfo
.
size
[
j
]
=
m_RoundBarMesh
.
iElementSizes
[
j
];
}
}
}
m_Vertices
.
clear
();
m_Vertices
.
clear
();
m_Normals
.
clear
();
m_Normals
.
clear
();
m_Indeices
.
clear
();
m_Indeices
.
clear
();
}
m_SenceBox
.
maxXCoord
=
std
::
max
(
m_SenceBox
.
maxXCoord
,
m_Extrude3DInfo
.
xTransform
+
m_Extrude3DInfo
.
xScale
);
m_SenceBox
.
minXCoord
=
std
::
min
(
m_SenceBox
.
minXCoord
,
m_Extrude3DInfo
.
xTransform
);
m_SenceBox
.
maxYCoord
=
std
::
max
(
m_SenceBox
.
maxYCoord
,
m_Extrude3DInfo
.
yTransform
+
m_Extrude3DInfo
.
yScale
);
m_SenceBox
.
minYCoord
=
std
::
min
(
m_SenceBox
.
minYCoord
,
m_Extrude3DInfo
.
yTransform
);
m_SenceBox
.
maxZCoord
=
std
::
max
(
m_SenceBox
.
maxZCoord
,
m_Extrude3DInfo
.
zTransform
+
m_Extrude3DInfo
.
zScale
);
m_SenceBox
.
minZCoord
=
std
::
min
(
m_SenceBox
.
minZCoord
,
m_Extrude3DInfo
.
zTransform
);
}
}
void
OpenGL3DRenderer
::
EndAddShape3DExtrudeObject
()
void
OpenGL3DRenderer
::
EndAddShape3DExtrudeObject
()
...
@@ -1048,12 +1069,12 @@ void OpenGL3DRenderer::Update3DUniformBlock()
...
@@ -1048,12 +1069,12 @@ void OpenGL3DRenderer::Update3DUniformBlock()
void
OpenGL3DRenderer
::
RenderExtrudeFlatSurface
(
const
Extrude3DInfo
&
extrude3D
,
int
surIndex
)
void
OpenGL3DRenderer
::
RenderExtrudeFlatSurface
(
const
Extrude3DInfo
&
extrude3D
,
int
surIndex
)
{
{
float
x
z
Scale
=
extrude3D
.
xScale
;
float
x
y
Scale
=
extrude3D
.
xScale
;
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
//m_Extrude3DInfo.xTransform + 140,
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
-
extrude3D
.
yTransform
,
extrude3D
.
yTransform
,
extrude3D
.
zTransform
};
extrude3D
.
zTransform
};
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
flatScale
=
glm
::
scale
(
x
zScale
,
xzScale
,
xz
Scale
);
glm
::
mat4
flatScale
=
glm
::
scale
(
x
yScale
,
xyScale
,
xy
Scale
);
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
flatScale
;
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
flatScale
;
if
(
!
mbPickingMode
)
if
(
!
mbPickingMode
)
{
{
...
@@ -1072,27 +1093,27 @@ void OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D,
...
@@ -1072,27 +1093,27 @@ void OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D,
void
OpenGL3DRenderer
::
RenderExtrudeBottomSurface
(
const
Extrude3DInfo
&
extrude3D
)
void
OpenGL3DRenderer
::
RenderExtrudeBottomSurface
(
const
Extrude3DInfo
&
extrude3D
)
{
{
float
x
z
Scale
=
extrude3D
.
xScale
;
float
x
y
Scale
=
extrude3D
.
xScale
;
float
yScale
=
extrude3D
.
y
Scale
;
float
zScale
=
extrude3D
.
z
Scale
;
float
actual
YTrans
=
yScale
-
m_RoundBarMesh
.
bottomThreshold
*
xz
Scale
;
float
actual
ZTrans
=
zScale
-
m_RoundBarMesh
.
bottomThreshold
*
xy
Scale
;
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
//m_Extrude3DInfo.xTransform + 140,
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
-
extrude3D
.
yTransform
,
extrude3D
.
yTransform
,
extrude3D
.
zTransform
};
extrude3D
.
zTransform
};
//PosVecf3 angle = {0.0f, 0.0f, 0.0f};
//PosVecf3 angle = {0.0f, 0.0f, 0.0f};
if
(
actual
Y
Trans
<
0.0
f
)
if
(
actual
Z
Trans
<
0.0
f
)
{
{
// the height of rounded corner is higher than the cube than use the org scale matrix
// the height of rounded corner is higher than the cube than use the org scale matrix
// yScale /= (float)(1 + BOTTOM_THRESHOLD);
// yScale /= (float)(1 + BOTTOM_THRESHOLD);
y
Scale
/=
(
float
)(
m_RoundBarMesh
.
bottomThreshold
);
z
Scale
/=
(
float
)(
m_RoundBarMesh
.
bottomThreshold
);
PosVecf3
scale
=
{
x
zScale
,
yScale
,
x
zScale
};
PosVecf3
scale
=
{
x
yScale
,
xyScale
,
zScale
};
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aScaleMatrix
=
glm
::
scale
(
glm
::
vec3
(
scale
.
x
,
scale
.
y
,
scale
.
z
));
glm
::
mat4
aScaleMatrix
=
glm
::
scale
(
glm
::
vec3
(
scale
.
x
,
scale
.
y
,
scale
.
z
));
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
aScaleMatrix
;
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
aScaleMatrix
;
}
}
else
else
{
{
glm
::
mat4
topTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
-
actualYTrans
,
0.0
));
glm
::
mat4
topTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
0.0
,
actualZTrans
));
glm
::
mat4
topScale
=
glm
::
scale
(
x
zScale
,
xzScale
,
xz
Scale
);
glm
::
mat4
topScale
=
glm
::
scale
(
x
yScale
,
xyScale
,
xy
Scale
);
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
topTrans
*
topScale
;
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
topTrans
*
topScale
;
}
}
...
@@ -1113,13 +1134,13 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D
...
@@ -1113,13 +1134,13 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D
void
OpenGL3DRenderer
::
RenderExtrudeMiddleSurface
(
const
Extrude3DInfo
&
extrude3D
)
void
OpenGL3DRenderer
::
RenderExtrudeMiddleSurface
(
const
Extrude3DInfo
&
extrude3D
)
{
{
float
x
z
Scale
=
extrude3D
.
xScale
;
float
x
y
Scale
=
extrude3D
.
xScale
;
float
yScale
=
extrude3D
.
y
Scale
;
float
zScale
=
extrude3D
.
z
Scale
;
float
actual
YScale
=
yScale
-
m_RoundBarMesh
.
bottomThreshold
*
xz
Scale
;
float
actual
ZScale
=
zScale
-
m_RoundBarMesh
.
bottomThreshold
*
xy
Scale
;
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
//m_Extrude3DInfo.xTransform + 140,
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
-
extrude3D
.
yTransform
,
extrude3D
.
yTransform
,
extrude3D
.
zTransform
};
extrude3D
.
zTransform
};
if
(
actual
Y
Scale
<
0.0
f
)
if
(
actual
Z
Scale
<
0.0
f
)
{
{
// the height of rounded corner is higher than the cube than use the org scale matrix
// the height of rounded corner is higher than the cube than use the org scale matrix
// yScale /= (float)(1 + BOTTOM_THRESHOLD);
// yScale /= (float)(1 + BOTTOM_THRESHOLD);
...
@@ -1129,14 +1150,14 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
...
@@ -1129,14 +1150,14 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
}
}
else
else
{
{
glm
::
mat4
scale
=
glm
::
scale
(
x
zScale
,
actualYScale
,
xz
Scale
);
glm
::
mat4
scale
=
glm
::
scale
(
x
yScale
,
xyScale
,
actualZ
Scale
);
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
scale
;
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
scale
;
}
}
if
(
extrude3D
.
reverse
)
if
(
extrude3D
.
reverse
)
{
{
glm
::
mat4
reverseMatrix
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
-
1.0
,
0
.0
));
glm
::
mat4
reverseMatrix
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
0.0
,
-
1
.0
));
m_Model
=
m_Model
*
reverseMatrix
;
m_Model
=
m_Model
*
reverseMatrix
;
}
}
...
@@ -1156,20 +1177,20 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
...
@@ -1156,20 +1177,20 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
void
OpenGL3DRenderer
::
RenderExtrudeTopSurface
(
const
Extrude3DInfo
&
extrude3D
)
void
OpenGL3DRenderer
::
RenderExtrudeTopSurface
(
const
Extrude3DInfo
&
extrude3D
)
{
{
float
x
z
Scale
=
extrude3D
.
xScale
;
float
x
y
Scale
=
extrude3D
.
xScale
;
float
yScale
=
extrude3D
.
y
Scale
;
float
zScale
=
extrude3D
.
z
Scale
;
float
actual
YTrans
=
yScale
-
m_RoundBarMesh
.
bottomThreshold
*
xz
Scale
;
float
actual
ZTrans
=
zScale
-
m_RoundBarMesh
.
bottomThreshold
*
xy
Scale
;
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
//m_Extrude3DInfo.xTransform + 140,
PosVecf3
trans
=
{
extrude3D
.
xTransform
,
-
extrude3D
.
yTransform
,
extrude3D
.
yTransform
,
extrude3D
.
zTransform
};
extrude3D
.
zTransform
};
if
(
actual
Y
Trans
<
0.0
f
)
if
(
actual
Z
Trans
<
0.0
f
)
{
{
// the height of rounded corner is higher than the cube than use the org scale matrix
// the height of rounded corner is higher than the cube than use the org scale matrix
//yScale /= (float)(1 + BOTTOM_THRESHOLD);
//yScale /= (float)(1 + BOTTOM_THRESHOLD);
y
Scale
/=
(
float
)(
m_RoundBarMesh
.
bottomThreshold
);
z
Scale
/=
(
float
)(
m_RoundBarMesh
.
bottomThreshold
);
glm
::
mat4
orgTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
-
1.0
,
0
.0
));
glm
::
mat4
orgTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
0.0
,
-
1
.0
));
glm
::
mat4
scale
=
glm
::
scale
(
x
zScale
,
yScale
,
x
zScale
);
glm
::
mat4
scale
=
glm
::
scale
(
x
yScale
,
xyScale
,
zScale
);
//MoveModelf(trans, angle, scale);
//MoveModelf(trans, angle, scale);
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
scale
*
orgTrans
;
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
scale
*
orgTrans
;
...
@@ -1177,9 +1198,9 @@ void OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D)
...
@@ -1177,9 +1198,9 @@ void OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D)
else
else
{
{
// use different matrices for different parts
// use different matrices for different parts
glm
::
mat4
orgTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
-
1.0
,
0
.0
));
glm
::
mat4
orgTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
0.0
,
-
1
.0
));
glm
::
mat4
topTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
actualYTrans
,
0.0
));
glm
::
mat4
topTrans
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
0.0
,
actualZTrans
));
glm
::
mat4
topScale
=
glm
::
scale
(
x
zScale
,
xzScale
,
xz
Scale
);
glm
::
mat4
topScale
=
glm
::
scale
(
x
yScale
,
xyScale
,
xy
Scale
);
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
glm
::
mat4
aTranslationMatrix
=
glm
::
translate
(
glm
::
vec3
(
trans
.
x
,
trans
.
y
,
trans
.
z
));
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
topTrans
*
topScale
*
orgTrans
;
m_Model
=
aTranslationMatrix
*
extrude3D
.
rotation
*
topTrans
*
topScale
*
orgTrans
;
}
}
...
@@ -1204,14 +1225,12 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
...
@@ -1204,14 +1225,12 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
float
xScale
=
extrude3D
.
xScale
;
float
xScale
=
extrude3D
.
xScale
;
float
yScale
=
extrude3D
.
yScale
;
float
yScale
=
extrude3D
.
yScale
;
float
zScale
=
extrude3D
.
zScale
;
float
zScale
=
extrude3D
.
zScale
;
glUniformMatrix4fv
(
maResources
.
m_3DViewID
,
1
,
GL_FALSE
,
&
m_3DView
[
0
][
0
]);
glm
::
mat4
transformMatrix
=
glm
::
translate
(
glm
::
vec3
(
extrude3D
.
xTransform
,
extrude3D
.
yTransform
,
extrude3D
.
zTransform
));
glUniformMatrix4fv
(
maResources
.
m_3DProjectionID
,
1
,
GL_FALSE
,
&
m_3DProjection
[
0
][
0
]);
glm
::
mat4
transformMatrix
=
glm
::
translate
(
glm
::
vec3
(
extrude3D
.
xTransform
,
-
extrude3D
.
yTransform
,
extrude3D
.
zTransform
));
glm
::
mat4
scaleMatrix
=
glm
::
scale
(
xScale
,
yScale
,
zScale
);
glm
::
mat4
scaleMatrix
=
glm
::
scale
(
xScale
,
yScale
,
zScale
);
m_Model
=
transformMatrix
*
extrude3D
.
rotation
*
scaleMatrix
;
m_Model
=
transformMatrix
*
extrude3D
.
rotation
*
scaleMatrix
;
if
(
extrude3D
.
reverse
)
if
(
extrude3D
.
reverse
)
{
{
glm
::
mat4
reverseMatrix
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
-
1.0
,
0
.0
));
glm
::
mat4
reverseMatrix
=
glm
::
translate
(
glm
::
vec3
(
0.0
,
0.0
,
-
1
.0
));
m_Model
=
m_Model
*
reverseMatrix
;
m_Model
=
m_Model
*
reverseMatrix
;
}
}
...
@@ -1231,9 +1250,6 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
...
@@ -1231,9 +1250,6 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
void
OpenGL3DRenderer
::
RenderExtrudeSurface
(
const
Extrude3DInfo
&
extrude3D
)
void
OpenGL3DRenderer
::
RenderExtrudeSurface
(
const
Extrude3DInfo
&
extrude3D
)
{
{
glUniformMatrix4fv
(
maResources
.
m_3DViewID
,
1
,
GL_FALSE
,
&
m_3DView
[
0
][
0
]);
glUniformMatrix4fv
(
maResources
.
m_3DProjectionID
,
1
,
GL_FALSE
,
&
m_3DProjection
[
0
][
0
]);
CHECK_GL_ERROR
();
RenderExtrudeMiddleSurface
(
extrude3D
);
RenderExtrudeMiddleSurface
(
extrude3D
);
// check reverse flag to decide whether to render the top middle
// check reverse flag to decide whether to render the top middle
if
(
extrude3D
.
reverse
)
if
(
extrude3D
.
reverse
)
...
@@ -1259,7 +1275,10 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
...
@@ -1259,7 +1275,10 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
{
{
Update3DUniformBlock
();
Update3DUniformBlock
();
glUseProgram
(
maResources
.
m_3DProID
);
glUseProgram
(
maResources
.
m_3DProID
);
glUniformMatrix4fv
(
maResources
.
m_3DViewID
,
1
,
GL_FALSE
,
&
m_3DView
[
0
][
0
]);
glUniformMatrix4fv
(
maResources
.
m_3DProjectionID
,
1
,
GL_FALSE
,
&
m_3DProjection
[
0
][
0
]);
}
}
CHECK_GL_ERROR
();
size_t
extrude3DNum
=
m_Extrude3DList
.
size
();
size_t
extrude3DNum
=
m_Extrude3DList
.
size
();
for
(
size_t
i
=
0
;
i
<
extrude3DNum
;
i
++
)
for
(
size_t
i
=
0
;
i
<
extrude3DNum
;
i
++
)
{
{
...
@@ -1292,8 +1311,8 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
...
@@ -1292,8 +1311,8 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
(
void
*
)
0
// array buffer offset
(
void
*
)
0
// array buffer offset
);
);
}
}
extrude3DInfo
.
y
Transform
*=
m_fHeightWeight
;
extrude3DInfo
.
z
Transform
*=
m_fHeightWeight
;
extrude3DInfo
.
y
Scale
*=
m_fHeightWeight
;
extrude3DInfo
.
z
Scale
*=
m_fHeightWeight
;
if
(
!
mbPickingMode
)
if
(
!
mbPickingMode
)
{
{
glBindBuffer
(
GL_UNIFORM_BUFFER
,
m_3DUBOBuffer
);
glBindBuffer
(
GL_UNIFORM_BUFFER
,
m_3DUBOBuffer
);
...
@@ -1330,19 +1349,19 @@ void OpenGL3DRenderer::CreateTextTexture(const BitmapEx& rBitmapEx, glm::vec3 vT
...
@@ -1330,19 +1349,19 @@ void OpenGL3DRenderer::CreateTextTexture(const BitmapEx& rBitmapEx, glm::vec3 vT
TextInfo
aTextInfo
;
TextInfo
aTextInfo
;
aTextInfo
.
vertex
[
0
]
=
vBottomRight
.
x
;
aTextInfo
.
vertex
[
0
]
=
vBottomRight
.
x
;
aTextInfo
.
vertex
[
1
]
=
vBottomRight
.
y
;
aTextInfo
.
vertex
[
1
]
=
vBottomRight
.
y
;
aTextInfo
.
vertex
[
2
]
=
vBottomRight
.
z
;
aTextInfo
.
vertex
[
2
]
=
vBottomRight
.
z
*
m_fHeightWeight
;
aTextInfo
.
vertex
[
3
]
=
vTopRight
.
x
;
aTextInfo
.
vertex
[
3
]
=
vTopRight
.
x
;
aTextInfo
.
vertex
[
4
]
=
vTopRight
.
y
;
aTextInfo
.
vertex
[
4
]
=
vTopRight
.
y
;
aTextInfo
.
vertex
[
5
]
=
vTopRight
.
z
;
aTextInfo
.
vertex
[
5
]
=
aTextInfo
.
vertex
[
2
]
+
(
vTopRight
.
z
-
vBottomRight
.
z
);
aTextInfo
.
vertex
[
6
]
=
vTopLeft
.
x
;
aTextInfo
.
vertex
[
7
]
=
vTopLeft
.
y
;
aTextInfo
.
vertex
[
8
]
=
vTopLeft
.
z
;
aTextInfo
.
vertex
[
9
]
=
vBottomLeft
.
x
;
aTextInfo
.
vertex
[
9
]
=
vBottomLeft
.
x
;
aTextInfo
.
vertex
[
10
]
=
vBottomLeft
.
y
;
aTextInfo
.
vertex
[
10
]
=
vBottomLeft
.
y
;
aTextInfo
.
vertex
[
11
]
=
vBottomLeft
.
z
;
aTextInfo
.
vertex
[
11
]
=
vBottomLeft
.
z
*
m_fHeightWeight
;
aTextInfo
.
vertex
[
6
]
=
vTopLeft
.
x
;
aTextInfo
.
vertex
[
7
]
=
vTopLeft
.
y
;
aTextInfo
.
vertex
[
8
]
=
aTextInfo
.
vertex
[
11
]
+
(
vTopLeft
.
z
-
vBottomLeft
.
z
);
CHECK_GL_ERROR
();
CHECK_GL_ERROR
();
glGenTextures
(
1
,
&
aTextInfo
.
texture
);
glGenTextures
(
1
,
&
aTextInfo
.
texture
);
...
@@ -1479,30 +1498,50 @@ void OpenGL3DRenderer::RenderClickPos(Point aMPos)
...
@@ -1479,30 +1498,50 @@ void OpenGL3DRenderer::RenderClickPos(Point aMPos)
void
OpenGL3DRenderer
::
CreateSceneBoxView
()
void
OpenGL3DRenderer
::
CreateSceneBoxView
()
{
{
//original code start
m_3DView
=
glm
::
lookAt
(
m_CameraInfo
.
cameraPos
,
m_3DView
=
glm
::
lookAt
(
m_CameraInfo
.
cameraPos
,
m_CameraInfo
.
cameraOrg
,
m_CameraInfo
.
cameraOrg
,
m_CameraInfo
.
cameraUp
);
m_CameraInfo
.
cameraUp
);
//original code end
float
senceBoxWidth
=
m_SenceBox
.
maxXCoord
-
m_SenceBox
.
minXCoord
;
float
senceBoxHeight
=
m_SenceBox
.
maxZCoord
-
m_SenceBox
.
minZCoord
;
float
senceBoxDepth
=
m_SenceBox
.
maxYCoord
-
m_SenceBox
.
minYCoord
;
float
distanceY
=
m_SenceBox
.
maxYCoord
+
senceBoxWidth
/
2
/
tan
(
m_fViewAngle
/
2
*
GL_PI
/
180.0
f
);
float
veriticalAngle
=
atan
((
float
)
m_iHeight
/
(
float
)
m_iWidth
);
float
distance
=
distanceY
/
cos
(
veriticalAngle
);
float
horizontalAngle
=
0
;
m_fHeightWeight
=
senceBoxWidth
*
(
float
)
m_iHeight
/
(
float
)
m_iWidth
/
senceBoxHeight
;
m_SenceBox
.
maxZCoord
*=
m_fHeightWeight
;
m_SenceBox
.
minZCoord
*=
m_fHeightWeight
;
m_CameraInfo
.
cameraOrg
=
glm
::
vec3
(
m_SenceBox
.
minXCoord
+
senceBoxWidth
/
2
,
m_SenceBox
.
minYCoord
+
senceBoxDepth
*
2
,
m_SenceBox
.
minZCoord
+
senceBoxHeight
*
m_fHeightWeight
/
2
);
//update the camera position and org
m_CameraInfo
.
cameraPos
.
x
=
m_CameraInfo
.
cameraOrg
.
x
+
distance
*
cos
(
veriticalAngle
)
*
sin
(
horizontalAngle
);
m_CameraInfo
.
cameraPos
.
y
=
m_CameraInfo
.
cameraOrg
.
y
+
distance
*
cos
(
veriticalAngle
)
*
cos
(
horizontalAngle
);
m_CameraInfo
.
cameraPos
.
z
=
m_CameraInfo
.
cameraOrg
.
z
+
distance
*
sin
(
veriticalAngle
);
m_3DView
=
glm
::
lookAt
(
m_CameraInfo
.
cameraPos
,
m_CameraInfo
.
cameraOrg
,
m_CameraInfo
.
cameraUp
);
}
}
void
OpenGL3DRenderer
::
ProcessUnrenderedShape
()
void
OpenGL3DRenderer
::
ProcessUnrenderedShape
()
{
{
CreateSceneBoxView
();
glViewport
(
0
,
0
,
m_iWidth
,
m_iHeight
);
glViewport
(
0
,
0
,
m_iWidth
,
m_iHeight
);
glClearDepth
(
1.0
f
);
glClearDepth
(
1.0
f
);
glClearColor
(
1.0
,
1.0
,
1.0
,
1.0
);
glClearColor
(
1.0
,
1.0
,
1.0
,
1.0
);
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
);
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
);
CreateSceneBoxView
();
//Polygon
//Polygon
RenderPolygon3DObject
();
RenderPolygon3DObject
();
//Shape3DExtrudeObject
//Shape3DExtrudeObject
RenderExtrude3DObject
();
RenderExtrude3DObject
();
//render text
//render text
RenderTextShape
();
RenderTextShape
();
glViewport
(
0
,
0
,
m_iWidth
,
m_iHeight
);
#if DEBUG_FBO
#if DEBUG_FBO
OUString
aFileName
=
OUString
(
"D://shaderout_"
)
+
OUString
::
number
(
m_iWidth
)
+
"_"
+
OUString
::
number
(
m_iHeight
)
+
".png"
;
OUString
aFileName
=
OUString
(
"D://shaderout_"
)
+
OUString
::
number
(
m_iWidth
)
+
"_"
+
OUString
::
number
(
m_iHeight
)
+
".png"
;
OpenGLHelper
::
renderToFile
(
m_iWidth
,
m_iHeight
,
aFileName
);
OpenGLHelper
::
renderToFile
(
m_iWidth
,
m_iHeight
,
aFileName
);
#endif
#endif
// glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
}
void
OpenGL3DRenderer
::
MoveModelf
(
PosVecf3
&
trans
,
PosVecf3
&
angle
,
PosVecf3
&
scale
)
void
OpenGL3DRenderer
::
MoveModelf
(
PosVecf3
&
trans
,
PosVecf3
&
angle
,
PosVecf3
&
scale
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment