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
212dfdbb
Kaydet (Commit)
212dfdbb
authored
Agu 09, 2014
tarafından
weigao
Kaydeden (comit)
Markus Mohrhard
Agu 13, 2014
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
add render fps rendering
Change-Id: Ic0c8c9a05079a4d4b715f90eccffb7c4ae8260c9
üst
05ecb52d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
92 additions
and
52 deletions
+92
-52
GL3DBarChart.cxx
chart2/source/view/charttypes/GL3DBarChart.cxx
+68
-47
GL3DBarChart.hxx
chart2/source/view/inc/GL3DBarChart.hxx
+12
-1
GL3DRenderer.hxx
chart2/source/view/inc/GL3DRenderer.hxx
+2
-0
GL3DRenderer.cxx
chart2/source/view/main/GL3DRenderer.cxx
+10
-4
No files found.
chart2/source/view/charttypes/GL3DBarChart.cxx
Dosyayı görüntüle @
212dfdbb
...
...
@@ -27,6 +27,7 @@
#define BENCH_MARK_MODE false
#define CLICK_EVENT_ID 1
#define SHAPE_START_ID 10
#define DATA_UPDATE_TIME 15
using
namespace
com
::
sun
::
star
;
...
...
@@ -185,12 +186,7 @@ public:
,
mbNeedFlyBack
(
false
)
,
mnStep
(
0
)
,
mnStepsTotal
(
0
)
,
miFrameCount
(
0
)
{
osl_getSystemTime
(
&
mafpsRenderStartTime
);
osl_getSystemTime
(
&
mafpsRenderEndTime
);
osl_getSystemTime
(
&
maScreenTextUpdateStartTime
);
osl_getSystemTime
(
&
maScreenTextUpdateEndTime
);
osl_getSystemTime
(
&
maClickFlyBackStartTime
);
osl_getSystemTime
(
&
maClickFlyBackEndTime
);
}
...
...
@@ -204,8 +200,6 @@ private:
void
MoveToCorner
();
void
ProcessScroll
();
void
UpdateScreenText
();
void
UpdateFPS
();
int
CalcTimeInterval
(
TimeValue
&
startTime
,
TimeValue
&
endTime
);
void
ProcessClickFlyBack
();
private
:
glm
::
vec3
maStartPos
;
...
...
@@ -216,13 +210,8 @@ private:
glm
::
vec3
maStepDirection
;
size_t
mnStep
;
size_t
mnStepsTotal
;
TimeValue
mafpsRenderStartTime
;
TimeValue
mafpsRenderEndTime
;
TimeValue
maScreenTextUpdateStartTime
;
TimeValue
maScreenTextUpdateEndTime
;
TimeValue
maClickFlyBackStartTime
;
TimeValue
maClickFlyBackEndTime
;
int
miFrameCount
;
OUString
maFPS
;
};
...
...
@@ -329,7 +318,7 @@ void RenderBenchMarkThread::ProcessClickFlyBack()
if
(
!
mbNeedFlyBack
)
return
;
osl_getSystemTime
(
&
maClickFlyBackEndTime
);
int
aDeltaMs
=
C
alcTimeInterval
(
maClickFlyBackStartTime
,
maClickFlyBackEndTime
);
int
aDeltaMs
=
mpChart
->
c
alcTimeInterval
(
maClickFlyBackStartTime
,
maClickFlyBackEndTime
);
if
(
aDeltaMs
>=
10000
)
{
mpChart
->
maRenderEvent
=
EVENT_MOVE_TO_DEFAULT
;
...
...
@@ -357,42 +346,18 @@ void RenderBenchMarkThread::ProcessMouseEvent()
}
}
int
RenderBenchMarkThread
::
CalcTimeInterval
(
TimeValue
&
startTime
,
TimeValue
&
endTime
)
{
TimeValue
aTime
;
aTime
.
Seconds
=
endTime
.
Seconds
-
startTime
.
Seconds
-
1
;
aTime
.
Nanosec
=
1000000000
+
endTime
.
Nanosec
-
startTime
.
Nanosec
;
aTime
.
Seconds
+=
aTime
.
Nanosec
/
1000000000
;
aTime
.
Nanosec
%=
1000000000
;
return
aTime
.
Seconds
*
1000
+
aTime
.
Nanosec
/
1000000
;
}
void
RenderBenchMarkThread
::
UpdateFPS
()
{
int
aDeltaMs
=
CalcTimeInterval
(
mafpsRenderStartTime
,
mafpsRenderEndTime
);
if
(
aDeltaMs
>=
500
)
{
osl_getSystemTime
(
&
mafpsRenderEndTime
);
aDeltaMs
=
CalcTimeInterval
(
mafpsRenderStartTime
,
mafpsRenderEndTime
);
int
iFPS
=
miFrameCount
*
1000
/
aDeltaMs
;
maFPS
=
OUString
(
"Render FPS: "
)
+
OUString
::
number
(
iFPS
);
miFrameCount
=
0
;
osl_getSystemTime
(
&
mafpsRenderStartTime
);
}
osl_getSystemTime
(
&
mafpsRenderEndTime
);
//will add the fps render code here later
}
void
RenderBenchMarkThread
::
UpdateScreenText
()
{
int
aDeltaMs
=
CalcTimeInterval
(
maScreenTextUpdateStartTime
,
maScreenTextUpdateEndTime
);
if
(
aDeltaMs
>=
20
)
if
(
mpChart
->
mbScreenTextNewRender
)
{
mpChart
->
mpRenderer
->
ReleaseScreenTextShapes
();
UpdateFPS
();
osl_getSystemTime
(
&
maScreenTextUpdateStartTime
);
mpChart
->
mpRenderer
->
ReleaseScreenTextTexture
();
for
(
boost
::
ptr_vector
<
opengl3D
::
Renderable3DObject
>::
iterator
itr
=
mpChart
->
maScreenTextShapes
.
begin
(),
itrEnd
=
mpChart
->
maScreenTextShapes
.
end
();
itr
!=
itrEnd
;
++
itr
)
{
itr
->
render
();
}
mpChart
->
mbScreenTextNewRender
=
false
;
}
osl_getSystemTime
(
&
maScreenTextUpdateEndTime
);
}
void
RenderBenchMarkThread
::
execute
()
...
...
@@ -406,6 +371,7 @@ void RenderBenchMarkThread::execute()
UpdateScreenText
();
ProcessMouseEvent
();
renderFrame
();
mpChart
->
miFrameCount
++
;
}
#ifdef WNT
Sleep
(
1
);
...
...
@@ -415,7 +381,6 @@ void RenderBenchMarkThread::execute()
nTV
.
Nanosec
=
1000000
;
osl_waitThread
(
&
nTV
);
#endif
miFrameCount
++
;
}
}
...
...
@@ -438,7 +403,10 @@ GL3DBarChart::GL3DBarChart(
maRenderEvent
(
EVENT_NONE
),
mSelectBarId
(
0
),
miScrollRate
(
0
),
mbScrollFlg
(
false
)
miFrameCount
(
0
),
mbScrollFlg
(
false
),
mbScreenTextNewRender
(
false
),
maFPS
(
OUString
(
"Render FPS: 0"
))
{
if
(
BENCH_MARK_MODE
)
{
...
...
@@ -452,6 +420,11 @@ GL3DBarChart::GL3DBarChart(
mpRenderer
->
SetScroll
();
}
}
maTimer
.
SetTimeout
(
DATA_UPDATE_TIME
);
maTimer
.
SetTimeoutHdl
(
LINK
(
this
,
GL3DBarChart
,
updateTimer
));
maTimer
.
Start
();
osl_getSystemTime
(
&
mafpsRenderStartTime
);
osl_getSystemTime
(
&
mafpsRenderEndTime
);
}
Size
aSize
=
mrWindow
.
GetSizePixel
();
mpRenderer
->
SetSize
(
aSize
);
...
...
@@ -939,6 +912,54 @@ void GL3DBarChart::contextDestroyed()
mbValidContext
=
false
;
}
void
GL3DBarChart
::
updateRenderFPS
()
{
int
aDeltaMs
=
calcTimeInterval
(
mafpsRenderStartTime
,
mafpsRenderEndTime
);
if
(
aDeltaMs
>=
500
)
{
osl_getSystemTime
(
&
mafpsRenderEndTime
);
aDeltaMs
=
calcTimeInterval
(
mafpsRenderStartTime
,
mafpsRenderEndTime
);
int
iFPS
=
miFrameCount
*
1000
/
aDeltaMs
;
maFPS
=
OUString
(
"Render FPS: "
)
+
OUString
::
number
(
iFPS
);
miFrameCount
=
0
;
osl_getSystemTime
(
&
mafpsRenderStartTime
);
}
osl_getSystemTime
(
&
mafpsRenderEndTime
);
maScreenTextShapes
.
push_back
(
new
opengl3D
::
ScreenText
(
mpRenderer
.
get
(),
*
mpTextCache
,
maFPS
,
0
));
opengl3D
::
TextCacheItem
tmpTextCache
=
mpTextCache
->
getText
(
maFPS
);
float
rectWidth
=
(
float
)
tmpTextCache
.
maSize
.
Width
()
/
(
float
)
tmpTextCache
.
maSize
.
Height
()
*
0.05
;
opengl3D
::
ScreenText
*
pScreenText
=
static_cast
<
opengl3D
::
ScreenText
*>
(
&
maScreenTextShapes
.
back
());
pScreenText
->
setPosition
(
glm
::
vec2
(
-
0.99
f
,
0.99
f
),
glm
::
vec2
(
-
0.99
f
+
rectWidth
,
0.89
f
));
}
int
GL3DBarChart
::
calcTimeInterval
(
TimeValue
&
startTime
,
TimeValue
&
endTime
)
{
TimeValue
aTime
;
aTime
.
Seconds
=
endTime
.
Seconds
-
startTime
.
Seconds
-
1
;
aTime
.
Nanosec
=
1000000000
+
endTime
.
Nanosec
-
startTime
.
Nanosec
;
aTime
.
Seconds
+=
aTime
.
Nanosec
/
1000000000
;
aTime
.
Nanosec
%=
1000000000
;
return
aTime
.
Seconds
*
1000
+
aTime
.
Nanosec
/
1000000
;
}
void
GL3DBarChart
::
updateScreenText
()
{
osl
::
MutexGuard
aGuard
(
maMutex
);
maScreenTextShapes
.
clear
();
mpRenderer
->
ReleaseScreenTextShapes
();
updateRenderFPS
();
mbScreenTextNewRender
=
true
;
}
IMPL_LINK_NOARG
(
GL3DBarChart
,
updateTimer
)
{
maTimer
.
Stop
();
updateScreenText
();
maTimer
.
SetTimeout
(
DATA_UPDATE_TIME
);
maTimer
.
Start
();
return
0
;
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
chart2/source/view/inc/GL3DBarChart.hxx
Dosyayı görüntüle @
212dfdbb
...
...
@@ -85,7 +85,11 @@ private:
void
moveToCorner
();
void
moveToDefault
();
glm
::
vec3
getCornerPosition
(
sal_Int8
nCornerId
);
void
updateTimer
();
void
updateScreenText
();
void
updateRenderFPS
();
DECL_LINK
(
updateTimer
,
void
*
);
int
calcTimeInterval
(
TimeValue
&
startTime
,
TimeValue
&
endTime
);
css
::
uno
::
Reference
<
css
::
chart2
::
XChartType
>
mxChartType
;
boost
::
ptr_vector
<
opengl3D
::
Renderable3DObject
>
maShapes
;
...
...
@@ -139,6 +143,13 @@ private:
Point
maClickPos
;
sal_uInt32
miScrollRate
;
bool
mbScrollFlg
;
Timer
maTimer
;
bool
mbScreenTextNewRender
;
boost
::
ptr_vector
<
opengl3D
::
Renderable3DObject
>
maScreenTextShapes
;
OUString
maFPS
;
sal_uInt32
miFrameCount
;
TimeValue
mafpsRenderStartTime
;
TimeValue
mafpsRenderEndTime
;
};
}
...
...
chart2/source/view/inc/GL3DRenderer.hxx
Dosyayı görüntüle @
212dfdbb
...
...
@@ -209,6 +209,7 @@ public:
void
ReleaseShapes
();
void
ReleaseScreenTextShapes
();
void
ReleaseTextTexture
();
void
ReleaseScreenTextTexture
();
void
StartClick
(
sal_uInt32
&
selectID
);
void
EndClick
();
void
SetScroll
();
...
...
@@ -462,6 +463,7 @@ private:
float
m_fLightPower
[
MAX_LIGHT_NUM
];
//for 3.0 end
std
::
vector
<
GLuint
>
m_Texturelist
;
std
::
vector
<
GLuint
>
m_ScreenTexturelist
;
bool
m_bHighLighting
;
sal_uInt32
m_uiSelectID
;
float
m_fScrollSpeed
;
...
...
chart2/source/view/main/GL3DRenderer.cxx
Dosyayı görüntüle @
212dfdbb
...
...
@@ -1709,6 +1709,7 @@ void OpenGL3DRenderer::CreateScreenTextTexture(
glBindTexture
(
GL_TEXTURE_2D
,
0
);
CHECK_GL_ERROR
();
m_ScreenTextInfoList
.
push_back
(
aTextInfo
);
m_ScreenTexturelist
.
push_back
(
aTextInfo
.
texture
);
}
void
OpenGL3DRenderer
::
CreateTextTextureSingle
(
const
boost
::
shared_array
<
sal_uInt8
>
&
bitmapBuf
,
...
...
@@ -1860,14 +1861,19 @@ void OpenGL3DRenderer::ReleaseTextTexture()
void
OpenGL3DRenderer
::
ReleaseScreenTextShapes
()
{
for
(
size_t
i
=
0
;
i
<
m_ScreenTextInfoList
.
size
();
i
++
)
m_ScreenTextInfoList
.
clear
();
}
void
OpenGL3DRenderer
::
ReleaseScreenTextTexture
()
{
for
(
size_t
i
=
0
;
i
<
m_ScreenTexturelist
.
size
();
i
++
)
{
TextInfo
&
textInfo
=
m_ScreenTextInfoList
[
i
];
glDeleteTextures
(
1
,
&
textInfo
.
texture
);
glDeleteTextures
(
1
,
&
m_ScreenTexturelist
[
i
]);
}
m_ScreenText
InfoL
ist
.
clear
();
m_ScreenText
urel
ist
.
clear
();
}
void
OpenGL3DRenderer
::
RenderScreenTextShape
()
{
glUseProgram
(
maResources
.
m_ScreenTextProID
);
...
...
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