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
e634b0dc
Kaydet (Commit)
e634b0dc
authored
May 20, 2014
tarafından
Markus Mohrhard
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
set the color for the picking
Change-Id: If7b902b16626384440241d88937161cf327e14d5
üst
1b8cfd5d
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
32 additions
and
12 deletions
+32
-12
GL3DRenderer.hxx
chart2/source/view/inc/GL3DRenderer.hxx
+6
-3
3DChartObjects.cxx
chart2/source/view/main/3DChartObjects.cxx
+5
-5
GL3DRenderer.cxx
chart2/source/view/main/GL3DRenderer.cxx
+21
-4
No files found.
chart2/source/view/inc/GL3DRenderer.hxx
Dosyayı görüntüle @
e634b0dc
...
@@ -79,6 +79,7 @@ struct Polygon3DInfo
...
@@ -79,6 +79,7 @@ struct Polygon3DInfo
bool
twoSidesLighting
;
bool
twoSidesLighting
;
long
fillStyle
;
long
fillStyle
;
glm
::
vec4
polygonColor
;
glm
::
vec4
polygonColor
;
glm
::
vec4
id
;
Vertices3D
*
vertices
;
Vertices3D
*
vertices
;
UVs3D
*
uvs
;
UVs3D
*
uvs
;
Normals3D
*
normals
;
Normals3D
*
normals
;
...
@@ -93,6 +94,7 @@ struct Extrude3DInfo
...
@@ -93,6 +94,7 @@ struct Extrude3DInfo
bool
rounded
;
bool
rounded
;
bool
twoSidesLighting
;
bool
twoSidesLighting
;
glm
::
vec4
extrudeColor
;
glm
::
vec4
extrudeColor
;
glm
::
vec4
id
;
float
xScale
;
float
xScale
;
float
yScale
;
float
yScale
;
float
zScale
;
float
zScale
;
...
@@ -136,6 +138,7 @@ struct PackedVertex{
...
@@ -136,6 +138,7 @@ struct PackedVertex{
struct
TextInfo
struct
TextInfo
{
{
glm
::
vec4
id
;
GLuint
texture
;
GLuint
texture
;
float
vertex
[
12
];
float
vertex
[
12
];
};
};
...
@@ -159,20 +162,20 @@ public:
...
@@ -159,20 +162,20 @@ public:
void
Set3DSenceInfo
(
sal_uInt32
color
=
255
,
bool
twoSidesLighting
=
true
);
void
Set3DSenceInfo
(
sal_uInt32
color
=
255
,
bool
twoSidesLighting
=
true
);
void
SetLightInfo
(
bool
lightOn
,
sal_uInt32
color
,
const
glm
::
vec4
&
direction
);
void
SetLightInfo
(
bool
lightOn
,
sal_uInt32
color
,
const
glm
::
vec4
&
direction
);
void
AddShapePolygon3DObject
(
sal_uInt32
color
,
bool
lineOnly
,
sal_uInt32
lineColor
,
void
AddShapePolygon3DObject
(
sal_uInt32
color
,
bool
lineOnly
,
sal_uInt32
lineColor
,
long
fillStyle
,
sal_uInt32
specular
);
long
fillStyle
,
sal_uInt32
specular
,
sal_uInt32
nUniqueId
);
void
EndAddShapePolygon3DObject
();
void
EndAddShapePolygon3DObject
();
void
AddPolygon3DObjectNormalPoint
(
float
x
,
float
y
,
float
z
);
void
AddPolygon3DObjectNormalPoint
(
float
x
,
float
y
,
float
z
);
void
EndAddPolygon3DObjectNormalPoint
();
void
EndAddPolygon3DObjectNormalPoint
();
void
AddPolygon3DObjectPoint
(
float
x
,
float
y
,
float
z
);
void
AddPolygon3DObjectPoint
(
float
x
,
float
y
,
float
z
);
void
EndAddPolygon3DObjectPoint
();
void
EndAddPolygon3DObjectPoint
();
void
AddShape3DExtrudeObject
(
bool
roundedCorner
,
sal_uInt32
color
,
sal_uInt32
specular
,
glm
::
mat4
modelMatrix
);
void
AddShape3DExtrudeObject
(
bool
roundedCorner
,
sal_uInt32
color
,
sal_uInt32
specular
,
const
glm
::
mat4
&
modelMatrix
,
sal_uInt32
nUniqueId
);
void
EndAddShape3DExtrudeObject
();
void
EndAddShape3DExtrudeObject
();
double
GetTime
();
double
GetTime
();
void
SetFPS
(
float
fps
);
void
SetFPS
(
float
fps
);
void
RenderClickPos
(
Point
aMPos
);
void
RenderClickPos
(
Point
aMPos
);
void
SetSize
(
const
Size
&
rSize
);
void
SetSize
(
const
Size
&
rSize
);
void
SetCameraInfo
(
glm
::
vec3
pos
,
glm
::
vec3
direction
,
glm
::
vec3
up
);
void
SetCameraInfo
(
glm
::
vec3
pos
,
glm
::
vec3
direction
,
glm
::
vec3
up
);
void
CreateTextTexture
(
const
BitmapEx
&
rBitmapEx
,
glm
::
vec3
vTopLeft
,
glm
::
vec3
vTopRight
,
glm
::
vec3
vBottomRight
,
glm
::
vec3
vBottomLeft
);
void
CreateTextTexture
(
const
BitmapEx
&
rBitmapEx
,
glm
::
vec3
vTopLeft
,
glm
::
vec3
vTopRight
,
glm
::
vec3
vBottomRight
,
glm
::
vec3
vBottomLeft
,
sal_uInt32
nUniqueId
);
void
ProcessUnrenderedShape
();
void
ProcessUnrenderedShape
();
void
SetPickingMode
(
bool
bPickingMode
);
void
SetPickingMode
(
bool
bPickingMode
);
...
...
chart2/source/view/main/3DChartObjects.cxx
Dosyayı görüntüle @
e634b0dc
...
@@ -39,7 +39,7 @@ Bar::Bar(OpenGL3DRenderer* pRenderer, const glm::mat4& rPosition, sal_uInt32 aCo
...
@@ -39,7 +39,7 @@ Bar::Bar(OpenGL3DRenderer* pRenderer, const glm::mat4& rPosition, sal_uInt32 aCo
void
Bar
::
render
()
void
Bar
::
render
()
{
{
mpRenderer
->
AddShape3DExtrudeObject
(
mbRoundedCorners
,
maColor
.
GetColor
(),
0xFFFFFF
,
maPos
);
mpRenderer
->
AddShape3DExtrudeObject
(
mbRoundedCorners
,
maColor
.
GetColor
(),
0xFFFFFF
,
maPos
,
mnUniqueId
);
mpRenderer
->
EndAddShape3DExtrudeObject
();
mpRenderer
->
EndAddShape3DExtrudeObject
();
}
}
...
@@ -50,7 +50,7 @@ Line::Line(OpenGL3DRenderer* pRenderer, sal_uInt32 nId):
...
@@ -50,7 +50,7 @@ Line::Line(OpenGL3DRenderer* pRenderer, sal_uInt32 nId):
void
Line
::
render
()
void
Line
::
render
()
{
{
mpRenderer
->
AddShapePolygon3DObject
(
0
,
true
,
maLineColor
.
GetColor
(),
0
,
0
);
mpRenderer
->
AddShapePolygon3DObject
(
0
,
true
,
maLineColor
.
GetColor
(),
0
,
0
,
mnUniqueId
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maPosBegin
.
x
,
maPosBegin
.
y
,
maPosBegin
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maPosBegin
.
x
,
maPosBegin
.
y
,
maPosBegin
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maPosEnd
.
x
,
maPosEnd
.
y
,
maPosEnd
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maPosEnd
.
x
,
maPosEnd
.
y
,
maPosEnd
.
z
);
mpRenderer
->
EndAddShapePolygon3DObject
();
mpRenderer
->
EndAddShapePolygon3DObject
();
...
@@ -87,7 +87,7 @@ void Text::render()
...
@@ -87,7 +87,7 @@ void Text::render()
{
{
glm
::
vec3
dir2
=
maTopRight
-
maTopLeft
;
glm
::
vec3
dir2
=
maTopRight
-
maTopLeft
;
glm
::
vec3
bottomLeft
=
maBottomRight
-
dir2
;
glm
::
vec3
bottomLeft
=
maBottomRight
-
dir2
;
mpRenderer
->
CreateTextTexture
(
maText
,
maTopLeft
,
maTopRight
,
maBottomRight
,
bottomLeft
);
mpRenderer
->
CreateTextTexture
(
maText
,
maTopLeft
,
maTopRight
,
maBottomRight
,
bottomLeft
,
mnUniqueId
);
}
}
Size
Text
::
getSize
()
const
Size
Text
::
getSize
()
const
...
@@ -112,7 +112,7 @@ void Rectangle::render()
...
@@ -112,7 +112,7 @@ void Rectangle::render()
glm
::
vec3
dir1
=
maBottomRight
-
maTopLeft
;
glm
::
vec3
dir1
=
maBottomRight
-
maTopLeft
;
glm
::
vec3
dir2
=
maTopRight
-
maTopLeft
;
glm
::
vec3
dir2
=
maTopRight
-
maTopLeft
;
glm
::
vec3
normal
=
glm
::
normalize
(
glm
::
cross
(
dir1
,
dir2
));
glm
::
vec3
normal
=
glm
::
normalize
(
glm
::
cross
(
dir1
,
dir2
));
mpRenderer
->
AddShapePolygon3DObject
(
maColor
.
GetColor
(),
false
,
0
,
1
,
0xFFFFFF
);
mpRenderer
->
AddShapePolygon3DObject
(
maColor
.
GetColor
(),
false
,
0
,
1
,
0xFFFFFF
,
mnUniqueId
);
glm
::
vec3
bottomLeft
=
maBottomRight
-
dir2
;
glm
::
vec3
bottomLeft
=
maBottomRight
-
dir2
;
//set polygon points and normals
//set polygon points and normals
mpRenderer
->
AddPolygon3DObjectPoint
(
maBottomRight
.
x
,
maBottomRight
.
y
,
maBottomRight
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maBottomRight
.
x
,
maBottomRight
.
y
,
maBottomRight
.
z
);
...
@@ -128,7 +128,7 @@ void Rectangle::render()
...
@@ -128,7 +128,7 @@ void Rectangle::render()
//we should render the edge if the edge color is different from the fill color
//we should render the edge if the edge color is different from the fill color
if
(
maColor
.
GetColor
()
!=
maLineColor
.
GetColor
())
if
(
maColor
.
GetColor
()
!=
maLineColor
.
GetColor
())
{
{
mpRenderer
->
AddShapePolygon3DObject
(
0
,
true
,
maLineColor
.
GetColor
(),
0
,
0xFFFFFF
);
mpRenderer
->
AddShapePolygon3DObject
(
0
,
true
,
maLineColor
.
GetColor
(),
0
,
0xFFFFFF
,
mnUniqueId
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maBottomRight
.
x
,
maBottomRight
.
y
,
maBottomRight
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maBottomRight
.
x
,
maBottomRight
.
y
,
maBottomRight
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maTopRight
.
x
,
maTopRight
.
y
,
maTopRight
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maTopRight
.
x
,
maTopRight
.
y
,
maTopRight
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maTopLeft
.
x
,
maTopLeft
.
y
,
maTopLeft
.
z
);
mpRenderer
->
AddPolygon3DObjectPoint
(
maTopLeft
.
x
,
maTopLeft
.
y
,
maTopLeft
.
z
);
...
...
chart2/source/view/main/GL3DRenderer.cxx
Dosyayı görüntüle @
e634b0dc
...
@@ -706,7 +706,10 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
...
@@ -706,7 +706,10 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
//fill vertex buffer
//fill vertex buffer
glBindBuffer
(
GL_ARRAY_BUFFER
,
m_VertexBuffer
);
glBindBuffer
(
GL_ARRAY_BUFFER
,
m_VertexBuffer
);
glBufferData
(
GL_ARRAY_BUFFER
,
pointList
->
size
()
*
sizeof
(
glm
::
vec3
),
&
pointList
[
0
][
0
],
GL_STATIC_DRAW
);
glBufferData
(
GL_ARRAY_BUFFER
,
pointList
->
size
()
*
sizeof
(
glm
::
vec3
),
&
pointList
[
0
][
0
],
GL_STATIC_DRAW
);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
polygon
.
polygonColor
[
0
]);
if
(
mbPickingMode
)
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
polygon
.
id
[
0
]);
else
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
polygon
.
polygonColor
[
0
]);
glUniformMatrix4fv
(
maResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
m_3DMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
m_3DMVP
[
0
][
0
]);
// 1rst attribute buffer : vertices
// 1rst attribute buffer : vertices
...
@@ -786,6 +789,7 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon)
...
@@ -786,6 +789,7 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon)
{
{
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
polygon
.
id
[
0
]);
}
}
GLint
maVertexID
=
mbPickingMode
?
maPickingResources
.
m_2DVertexID
:
maResources
.
m_3DVertexID
;
GLint
maVertexID
=
mbPickingMode
?
maPickingResources
.
m_2DVertexID
:
maResources
.
m_3DVertexID
;
...
@@ -878,9 +882,10 @@ void OpenGL3DRenderer::SetLightInfo(bool lightOn, sal_uInt32 nColor, const glm::
...
@@ -878,9 +882,10 @@ void OpenGL3DRenderer::SetLightInfo(bool lightOn, sal_uInt32 nColor, const glm::
}
}
}
}
void
OpenGL3DRenderer
::
AddShapePolygon3DObject
(
sal_uInt32
nColor
,
bool
lineOnly
,
sal_uInt32
nLineColor
,
long
fillStyle
,
sal_uInt32
specular
)
void
OpenGL3DRenderer
::
AddShapePolygon3DObject
(
sal_uInt32
nColor
,
bool
lineOnly
,
sal_uInt32
nLineColor
,
long
fillStyle
,
sal_uInt32
specular
,
sal_uInt32
nUniqueId
)
{
{
m_Polygon3DInfo
.
polygonColor
=
getColorAsVector
(
nColor
);
m_Polygon3DInfo
.
polygonColor
=
getColorAsVector
(
nColor
);
m_Polygon3DInfo
.
id
=
getColorAsVector
(
nUniqueId
);
m_Polygon3DInfo
.
material
.
materialColor
=
m_Polygon3DInfo
.
polygonColor
;
//material color seems to be the same for all parts, so we use the polygon color
m_Polygon3DInfo
.
material
.
materialColor
=
m_Polygon3DInfo
.
polygonColor
;
//material color seems to be the same for all parts, so we use the polygon color
//line or Polygon
//line or Polygon
m_Polygon3DInfo
.
lineOnly
=
lineOnly
;
m_Polygon3DInfo
.
lineOnly
=
lineOnly
;
...
@@ -960,8 +965,9 @@ void OpenGL3DRenderer::EndAddPolygon3DObjectPoint()
...
@@ -960,8 +965,9 @@ void OpenGL3DRenderer::EndAddPolygon3DObjectPoint()
m_Polygon3DInfo
.
vertices
=
NULL
;
m_Polygon3DInfo
.
vertices
=
NULL
;
}
}
void
OpenGL3DRenderer
::
AddShape3DExtrudeObject
(
bool
roundedCorner
,
sal_uInt32
nColor
,
sal_uInt32
specular
,
glm
::
mat4
modelMatrix
)
void
OpenGL3DRenderer
::
AddShape3DExtrudeObject
(
bool
roundedCorner
,
sal_uInt32
nColor
,
sal_uInt32
specular
,
const
glm
::
mat4
&
modelMatrix
,
sal_uInt32
nUniqueId
)
{
{
m_Extrude3DInfo
.
id
=
getColorAsVector
(
nUniqueId
);
glm
::
vec4
tranform
=
modelMatrix
*
glm
::
vec4
(
0.0
,
0.0
,
0.0
,
1.0
);
glm
::
vec4
tranform
=
modelMatrix
*
glm
::
vec4
(
0.0
,
0.0
,
0.0
,
1.0
);
glm
::
vec4
DirX
=
modelMatrix
*
glm
::
vec4
(
1.0
,
0.0
,
0.0
,
0.0
);
glm
::
vec4
DirX
=
modelMatrix
*
glm
::
vec4
(
1.0
,
0.0
,
0.0
,
0.0
);
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
);
...
@@ -1091,6 +1097,7 @@ void OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D,
...
@@ -1091,6 +1097,7 @@ void OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D,
{
{
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
extrude3D
.
id
[
0
]);
}
}
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
surIndex
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
surIndex
]));
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
surIndex
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
surIndex
]));
...
@@ -1134,6 +1141,7 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D
...
@@ -1134,6 +1141,7 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D
{
{
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
extrude3D
.
id
[
0
]);
}
}
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
BOTTOM_SURFACE
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
BOTTOM_SURFACE
]));
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
BOTTOM_SURFACE
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
BOTTOM_SURFACE
]));
}
}
...
@@ -1178,6 +1186,7 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
...
@@ -1178,6 +1186,7 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
{
{
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
extrude3D
.
id
[
0
]);
}
}
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
MIDDLE_SURFACE
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
MIDDLE_SURFACE
]));
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
MIDDLE_SURFACE
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
MIDDLE_SURFACE
]));
}
}
...
@@ -1223,6 +1232,7 @@ void OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D)
...
@@ -1223,6 +1232,7 @@ void OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D)
{
{
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
extrude3D
.
id
[
0
]);
}
}
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
TOP_SURFACE
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
TOP_SURFACE
]));
glDrawElements
(
GL_TRIANGLES
,
extrude3D
.
size
[
TOP_SURFACE
],
GL_UNSIGNED_SHORT
,
reinterpret_cast
<
GLvoid
*>
(
extrude3D
.
startIndex
[
TOP_SURFACE
]));
RenderExtrudeFlatSurface
(
extrude3D
,
FLAT_BOTTOM_SURFACE
);
RenderExtrudeFlatSurface
(
extrude3D
,
FLAT_BOTTOM_SURFACE
);
...
@@ -1253,6 +1263,7 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
...
@@ -1253,6 +1263,7 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
{
{
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glm
::
mat4
aMVP
=
m_3DProjection
*
m_3DView
*
m_Model
;
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniformMatrix4fv
(
maPickingResources
.
m_MatrixID
,
1
,
GL_FALSE
,
&
aMVP
[
0
][
0
]);
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
extrude3D
.
id
[
0
]);
}
}
glDrawArrays
(
GL_TRIANGLES
,
0
,
36
);
glDrawArrays
(
GL_TRIANGLES
,
0
,
36
);
}
}
...
@@ -1279,7 +1290,9 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
...
@@ -1279,7 +1290,9 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
glEnable
(
GL_CULL_FACE
);
glEnable
(
GL_CULL_FACE
);
glCullFace
(
GL_BACK
);
glCullFace
(
GL_BACK
);
if
(
mbPickingMode
)
if
(
mbPickingMode
)
{
glUseProgram
(
maPickingResources
.
m_CommonProID
);
glUseProgram
(
maPickingResources
.
m_CommonProID
);
}
else
else
{
{
Update3DUniformBlock
();
Update3DUniformBlock
();
...
@@ -1294,6 +1307,9 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
...
@@ -1294,6 +1307,9 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
Extrude3DInfo
extrude3DInfo
=
m_Extrude3DList
[
i
];
Extrude3DInfo
extrude3DInfo
=
m_Extrude3DList
[
i
];
GLuint
vertexBuf
=
extrude3DInfo
.
rounded
?
m_CubeVertexBuf
:
m_BoundBox
;
GLuint
vertexBuf
=
extrude3DInfo
.
rounded
?
m_CubeVertexBuf
:
m_BoundBox
;
GLuint
normalBuf
=
extrude3DInfo
.
rounded
?
m_CubeNormalBuf
:
m_BoundBoxNormal
;
GLuint
normalBuf
=
extrude3DInfo
.
rounded
?
m_CubeNormalBuf
:
m_BoundBoxNormal
;
if
(
mbPickingMode
)
glUniform4fv
(
maResources
.
m_2DColorID
,
1
,
&
extrude3DInfo
.
id
[
0
]);
// 1st attribute buffer : vertices
// 1st attribute buffer : vertices
GLint
aVertexID
=
mbPickingMode
?
maPickingResources
.
m_2DVertexID
:
maResources
.
m_3DVertexID
;
GLint
aVertexID
=
mbPickingMode
?
maPickingResources
.
m_2DVertexID
:
maResources
.
m_3DVertexID
;
...
@@ -1348,13 +1364,14 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
...
@@ -1348,13 +1364,14 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
glDisable
(
GL_CULL_FACE
);
glDisable
(
GL_CULL_FACE
);
}
}
void
OpenGL3DRenderer
::
CreateTextTexture
(
const
BitmapEx
&
rBitmapEx
,
glm
::
vec3
vTopLeft
,
glm
::
vec3
vTopRight
,
glm
::
vec3
vBottomRight
,
glm
::
vec3
vBottomLeft
)
void
OpenGL3DRenderer
::
CreateTextTexture
(
const
BitmapEx
&
rBitmapEx
,
glm
::
vec3
vTopLeft
,
glm
::
vec3
vTopRight
,
glm
::
vec3
vBottomRight
,
glm
::
vec3
vBottomLeft
,
sal_uInt32
nUniqueId
)
{
{
long
bmpWidth
=
rBitmapEx
.
GetSizePixel
().
Width
();
long
bmpWidth
=
rBitmapEx
.
GetSizePixel
().
Width
();
long
bmpHeight
=
rBitmapEx
.
GetSizePixel
().
Height
();
long
bmpHeight
=
rBitmapEx
.
GetSizePixel
().
Height
();
boost
::
scoped_array
<
sal_uInt8
>
bitmapBuf
(
OpenGLHelper
::
ConvertBitmapExToRGBABuffer
(
rBitmapEx
));
boost
::
scoped_array
<
sal_uInt8
>
bitmapBuf
(
OpenGLHelper
::
ConvertBitmapExToRGBABuffer
(
rBitmapEx
));
TextInfo
aTextInfo
;
TextInfo
aTextInfo
;
aTextInfo
.
id
=
getColorAsVector
(
nUniqueId
);
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
*
m_fHeightWeight
;
aTextInfo
.
vertex
[
2
]
=
vBottomRight
.
z
*
m_fHeightWeight
;
...
...
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