mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-05 23:00:18 +02:00
All onscreen text, overlay OFF when stats are off
This commit is contained in:
parent
19f20aa456
commit
746bce8626
1 changed files with 48 additions and 35 deletions
|
@ -2791,9 +2791,11 @@ void Application::displayOverlay() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
_audio.render(_glWidget->width(), _glWidget->height());
|
if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::Oscilloscope)) {
|
_audio.render(_glWidget->width(), _glWidget->height());
|
||||||
_audioScope.render(45, _glWidget->height() - 200);
|
if (Menu::getInstance()->isOptionChecked(MenuOption::Oscilloscope)) {
|
||||||
|
_audioScope.render(45, _glWidget->height() - 200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2833,7 +2835,24 @@ void Application::displayOverlay() {
|
||||||
glPointSize(1.0f);
|
glPointSize(1.0f);
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {
|
||||||
|
// Onscreen text about position, servers, etc
|
||||||
displayStats();
|
displayStats();
|
||||||
|
// Bandwidth meter
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::Bandwidth)) {
|
||||||
|
_bandwidthMeter.render(_glWidget->width(), _glWidget->height());
|
||||||
|
}
|
||||||
|
// Stats at upper right of screen about who domain server is telling us about
|
||||||
|
glPointSize(1.0f);
|
||||||
|
char nodes[100];
|
||||||
|
|
||||||
|
NodeList* nodeList = NodeList::getInstance();
|
||||||
|
int totalAvatars = 0, totalServers = 0;
|
||||||
|
|
||||||
|
for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) {
|
||||||
|
node->getType() == NODE_TYPE_AGENT ? totalAvatars++ : totalServers++;
|
||||||
|
}
|
||||||
|
sprintf(nodes, "Servers: %d, Avatars: %d\n", totalServers, totalAvatars);
|
||||||
|
drawtext(_glWidget->width() - 150, 20, 0.10, 0, 1.0, 0, nodes, 1, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// testing rendering coverage map
|
// testing rendering coverage map
|
||||||
|
@ -2845,9 +2864,6 @@ void Application::displayOverlay() {
|
||||||
renderCoverageMap();
|
renderCoverageMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::Bandwidth)) {
|
|
||||||
_bandwidthMeter.render(_glWidget->width(), _glWidget->height());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::Log)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::Log)) {
|
||||||
LogDisplay::instance.render(_glWidget->width(), _glWidget->height());
|
LogDisplay::instance.render(_glWidget->width(), _glWidget->height());
|
||||||
|
@ -2867,19 +2883,6 @@ void Application::displayOverlay() {
|
||||||
drawtext(_glWidget->width() - 102, _glWidget->height() - 22, 0.30, 0, 1.0, 0, frameTimer, 1, 1, 1);
|
drawtext(_glWidget->width() - 102, _glWidget->height() - 22, 0.30, 0, 1.0, 0, frameTimer, 1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stats at upper right of screen about who domain server is telling us about
|
|
||||||
glPointSize(1.0f);
|
|
||||||
char nodes[100];
|
|
||||||
|
|
||||||
NodeList* nodeList = NodeList::getInstance();
|
|
||||||
int totalAvatars = 0, totalServers = 0;
|
|
||||||
|
|
||||||
for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) {
|
|
||||||
node->getType() == NODE_TYPE_AGENT ? totalAvatars++ : totalServers++;
|
|
||||||
}
|
|
||||||
|
|
||||||
sprintf(nodes, "Servers: %d, Avatars: %d\n", totalServers, totalAvatars);
|
|
||||||
drawtext(_glWidget->width() - 150, 20, 0.10, 0, 1.0, 0, nodes, 1, 0, 0);
|
|
||||||
|
|
||||||
// render the webcam input frame
|
// render the webcam input frame
|
||||||
_webcam.renderPreview(_glWidget->width(), _glWidget->height());
|
_webcam.renderPreview(_glWidget->width(), _glWidget->height());
|
||||||
|
@ -2941,11 +2944,12 @@ void Application::displayOverlay() {
|
||||||
|
|
||||||
void Application::displayStats() {
|
void Application::displayStats() {
|
||||||
int statsVerticalOffset = 8;
|
int statsVerticalOffset = 8;
|
||||||
|
const int PELS_PER_LINE = 15;
|
||||||
char stats[200];
|
char stats[200];
|
||||||
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
sprintf(stats, "%3.0f FPS, %d Pkts/sec, %3.2f Mbps ",
|
sprintf(stats, "%3.0f FPS, %d Pkts/sec, %3.2f Mbps ",
|
||||||
_fps, _packetsPerSecond, (float)_bytesPerSecond * 8.f / 1000000.f);
|
_fps, _packetsPerSecond, (float)_bytesPerSecond * 8.f / 1000000.f);
|
||||||
drawtext(10, statsVerticalOffset + 15, 0.10f, 0, 1.0, 0, stats);
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, stats);
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::TestPing)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::TestPing)) {
|
||||||
int pingAudio = 0, pingAvatar = 0, pingVoxel = 0, pingVoxelMax = 0;
|
int pingAudio = 0, pingAvatar = 0, pingVoxel = 0, pingVoxelMax = 0;
|
||||||
|
@ -2975,14 +2979,16 @@ void Application::displayStats() {
|
||||||
}
|
}
|
||||||
|
|
||||||
char pingStats[200];
|
char pingStats[200];
|
||||||
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
sprintf(pingStats, "Ping audio/avatar/voxel: %d / %d / %d avg %d max ", pingAudio, pingAvatar, pingVoxel, pingVoxelMax);
|
sprintf(pingStats, "Ping audio/avatar/voxel: %d / %d / %d avg %d max ", pingAudio, pingAvatar, pingVoxel, pingVoxelMax);
|
||||||
drawtext(10, statsVerticalOffset + 35, 0.10f, 0, 1.0, 0, pingStats);
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, pingStats);
|
||||||
}
|
}
|
||||||
|
|
||||||
char avatarStats[200];
|
char avatarStats[200];
|
||||||
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
glm::vec3 avatarPos = _myAvatar.getPosition();
|
glm::vec3 avatarPos = _myAvatar.getPosition();
|
||||||
sprintf(avatarStats, "Avatar: pos %.3f, %.3f, %.3f, vel %.1f, yaw = %.2f", avatarPos.x, avatarPos.y, avatarPos.z, glm::length(_myAvatar.getVelocity()), _myAvatar.getBodyYaw());
|
sprintf(avatarStats, "Avatar: pos %.3f, %.3f, %.3f, vel %.1f, yaw = %.2f", avatarPos.x, avatarPos.y, avatarPos.z, glm::length(_myAvatar.getVelocity()), _myAvatar.getBodyYaw());
|
||||||
drawtext(10, statsVerticalOffset + 55, 0.10f, 0, 1.0, 0, avatarStats);
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarStats);
|
||||||
|
|
||||||
|
|
||||||
std::stringstream voxelStats;
|
std::stringstream voxelStats;
|
||||||
|
@ -2990,7 +2996,8 @@ void Application::displayStats() {
|
||||||
voxelStats << "Voxels Rendered: " << _voxels.getVoxelsRendered() / 1000.f << "K " <<
|
voxelStats << "Voxels Rendered: " << _voxels.getVoxelsRendered() / 1000.f << "K " <<
|
||||||
"Updated: " << _voxels.getVoxelsUpdated()/1000.f << "K " <<
|
"Updated: " << _voxels.getVoxelsUpdated()/1000.f << "K " <<
|
||||||
"Max: " << _voxels.getMaxVoxels()/1000.f << "K ";
|
"Max: " << _voxels.getMaxVoxels()/1000.f << "K ";
|
||||||
drawtext(10, statsVerticalOffset + 230, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
voxelStats <<
|
voxelStats <<
|
||||||
|
@ -3006,27 +3013,32 @@ void Application::displayStats() {
|
||||||
//voxelStats << "VoxelNode size: " << sizeof(VoxelNode) << " bytes ";
|
//voxelStats << "VoxelNode size: " << sizeof(VoxelNode) << " bytes ";
|
||||||
//voxelStats << "AABox size: " << sizeof(AABox) << " bytes ";
|
//voxelStats << "AABox size: " << sizeof(AABox) << " bytes ";
|
||||||
|
|
||||||
drawtext(10, statsVerticalOffset + 250, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
char* voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_VOXELS);
|
char* voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_VOXELS);
|
||||||
voxelStats << "Voxels Sent from Server: " << voxelDetails;
|
voxelStats << "Voxels Sent from Server: " << voxelDetails;
|
||||||
drawtext(10, statsVerticalOffset + 270, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_ELAPSED);
|
voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_ELAPSED);
|
||||||
voxelStats << "Scene Send Time from Server: " << voxelDetails;
|
voxelStats << "Scene Send Time from Server: " << voxelDetails;
|
||||||
drawtext(10, statsVerticalOffset + 290, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_ENCODE);
|
voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_ENCODE);
|
||||||
voxelStats << "Encode Time on Server: " << voxelDetails;
|
voxelStats << "Encode Time on Server: " << voxelDetails;
|
||||||
drawtext(10, statsVerticalOffset + 310, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
voxelStats.str("");
|
voxelStats.str("");
|
||||||
voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_MODE);
|
voxelDetails = _voxelSceneStats.getItemValue(VoxelSceneStats::ITEM_MODE);
|
||||||
voxelStats << "Sending Mode: " << voxelDetails;
|
voxelStats << "Sending Mode: " << voxelDetails;
|
||||||
drawtext(10, statsVerticalOffset + 330, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)voxelStats.str().c_str());
|
||||||
|
|
||||||
Node *avatarMixer = NodeList::getInstance()->soloNodeOfType(NODE_TYPE_AVATAR_MIXER);
|
Node *avatarMixer = NodeList::getInstance()->soloNodeOfType(NODE_TYPE_AVATAR_MIXER);
|
||||||
char avatarMixerStats[200];
|
char avatarMixerStats[200];
|
||||||
|
@ -3038,20 +3050,21 @@ void Application::displayStats() {
|
||||||
} else {
|
} else {
|
||||||
sprintf(avatarMixerStats, "No Avatar Mixer");
|
sprintf(avatarMixerStats, "No Avatar Mixer");
|
||||||
}
|
}
|
||||||
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
drawtext(10, statsVerticalOffset + 350, 0.10f, 0, 1.0, 0, avatarMixerStats);
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarMixerStats);
|
||||||
drawtext(10, statsVerticalOffset + 450, 0.10f, 0, 1.0, 0, (char *)LeapManager::statusString().c_str());
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char *)LeapManager::statusString().c_str());
|
||||||
|
|
||||||
if (_perfStatsOn) {
|
if (_perfStatsOn) {
|
||||||
// Get the PerfStats group details. We need to allocate and array of char* long enough to hold 1+groups
|
// Get the PerfStats group details. We need to allocate and array of char* long enough to hold 1+groups
|
||||||
char** perfStatLinesArray = new char*[PerfStat::getGroupCount()+1];
|
char** perfStatLinesArray = new char*[PerfStat::getGroupCount()+1];
|
||||||
int lines = PerfStat::DumpStats(perfStatLinesArray);
|
int lines = PerfStat::DumpStats(perfStatLinesArray);
|
||||||
int atZ = 150; // arbitrary place on screen that looks good
|
|
||||||
for (int line=0; line < lines; line++) {
|
for (int line=0; line < lines; line++) {
|
||||||
drawtext(10, statsVerticalOffset + atZ, 0.10f, 0, 1.0, 0, perfStatLinesArray[line]);
|
statsVerticalOffset += PELS_PER_LINE;
|
||||||
|
drawtext(10, statsVerticalOffset, 0.10f, 0, 1.0, 0, perfStatLinesArray[line]);
|
||||||
delete perfStatLinesArray[line]; // we're responsible for cleanup
|
delete perfStatLinesArray[line]; // we're responsible for cleanup
|
||||||
perfStatLinesArray[line]=NULL;
|
perfStatLinesArray[line]=NULL;
|
||||||
atZ+=20; // height of a line
|
|
||||||
}
|
}
|
||||||
delete []perfStatLinesArray; // we're responsible for cleanup
|
delete []perfStatLinesArray; // we're responsible for cleanup
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue