mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
stats font & color changes, styling audio & bandwidth meters
This commit is contained in:
parent
0a94488b22
commit
a2f8a61a69
5 changed files with 67 additions and 51 deletions
|
@ -254,6 +254,10 @@ Application::Application(int& argc, char** argv, timeval &startup_time) :
|
|||
|
||||
restoreSizeAndPosition();
|
||||
loadScripts();
|
||||
|
||||
QFontDatabase fontDatabase;
|
||||
fontDatabase.addApplicationFont("resources/styles/Inconsolata.otf");
|
||||
|
||||
_window->setVisible(true);
|
||||
_glWidget->setFocusPolicy(Qt::StrongFocus);
|
||||
_glWidget->setFocus();
|
||||
|
@ -3248,15 +3252,15 @@ void Application::displayStats() {
|
|||
statsHorizontalOffset += 5;
|
||||
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0f, 0, serverNodes, .93f, .93f, .93f);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0f, 2, serverNodes, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0f, 0, avatarNodes, .93f, .93f, .93f);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0f, 2, avatarNodes, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, framesPerSecond);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, framesPerSecond, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, packetsPerSecond);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, packetsPerSecond, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, averageMegabitsPerSecond);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, averageMegabitsPerSecond, .93f, .93f, .93f);
|
||||
|
||||
statsVerticalOffset = 0;
|
||||
statsHorizontalOffset += 196;
|
||||
|
@ -3302,13 +3306,13 @@ void Application::displayStats() {
|
|||
statsHorizontalOffset += 5;
|
||||
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, audioPing);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, audioPing, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarPing);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, avatarPing, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, voxelAvgPing);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, voxelAvgPing, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, voxelMaxPing);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, voxelMaxPing, .93f, .93f, .93f);
|
||||
|
||||
statsVerticalOffset = 0;
|
||||
statsHorizontalOffset += 246;
|
||||
|
@ -3336,13 +3340,13 @@ void Application::displayStats() {
|
|||
statsHorizontalOffset += 5;
|
||||
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarPosition);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, avatarPosition, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarVelocity);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, avatarVelocity, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarBodyYaw);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, avatarBodyYaw, .93f, .93f, .93f);
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, avatarMixerStats);
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, avatarMixerStats, .93f, .93f, .93f);
|
||||
|
||||
statsVerticalOffset = 0;
|
||||
statsHorizontalOffset = _glWidget->width() - 451;
|
||||
|
@ -3354,7 +3358,7 @@ void Application::displayStats() {
|
|||
voxelStats.str("");
|
||||
voxelStats << "Voxels Memory Nodes: " << VoxelTreeElement::getTotalMemoryUsage() / 1000000.f << "MB";
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
voxelStats.str("");
|
||||
voxelStats <<
|
||||
|
@ -3364,21 +3368,21 @@ void Application::displayStats() {
|
|||
? voxelStats << " / GPU: " << _voxels.getVoxelMemoryUsageGPU() / 1000000.f << "MB"
|
||||
: "";
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
// Voxel Rendering
|
||||
voxelStats.str("");
|
||||
voxelStats.precision(4);
|
||||
voxelStats << "Voxel Rendering Slots Max: " << _voxels.getMaxVoxels() / 1000.f << "K";
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
voxelStats.str("");
|
||||
voxelStats.precision(4);
|
||||
voxelStats << "Drawn: " << _voxels.getVoxelsWritten() / 1000.f << "K " <<
|
||||
"Abandoned: " << _voxels.getAbandonedVoxels() / 1000.f << "K ";
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
// iterate all the current voxel stats, and list their sending modes, and total voxel counts
|
||||
std::stringstream sendingMode("");
|
||||
|
@ -3417,7 +3421,7 @@ void Application::displayStats() {
|
|||
sendingMode << " <SCENE STABLE>";
|
||||
}
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)sendingMode.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)sendingMode.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
// Incoming packets
|
||||
voxelStats.str("");
|
||||
|
@ -3439,7 +3443,7 @@ void Application::displayStats() {
|
|||
}
|
||||
}
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
|
||||
|
@ -3451,14 +3455,14 @@ void Application::displayStats() {
|
|||
voxelStats.str("");
|
||||
voxelStats << "Server voxels: " << serversTotalString.toLocal8Bit().constData();
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
voxelStats.str("");
|
||||
voxelStats <<
|
||||
"Internal: " << serversInternalString.toLocal8Bit().constData() << " " <<
|
||||
"Leaves: " << serversLeavesString.toLocal8Bit().constData() << "";
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
unsigned long localTotal = VoxelTreeElement::getNodeCount();
|
||||
unsigned long localInternal = VoxelTreeElement::getInternalNodeCount();
|
||||
|
@ -3471,14 +3475,14 @@ void Application::displayStats() {
|
|||
voxelStats.str("");
|
||||
voxelStats << "Local voxels: " << localTotalString.toLocal8Bit().constData();
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
|
||||
voxelStats.str("");
|
||||
voxelStats <<
|
||||
"Internal: " << localInternalString.toLocal8Bit().constData() << " " <<
|
||||
"Leaves: " << localLeavesString.toLocal8Bit().constData() << "";
|
||||
statsVerticalOffset += PELS_PER_LINE;
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 0, (char*)voxelStats.str().c_str());
|
||||
drawtext(statsHorizontalOffset, statsVerticalOffset, 0.10f, 0, 1.0, 2, (char*)voxelStats.str().c_str(), .93f, .93f, .93f);
|
||||
}
|
||||
|
||||
void Application::renderThrustAtVoxel(const glm::vec3& thrust) {
|
||||
|
|
|
@ -548,7 +548,7 @@ void Audio::render(int screenWidth, int screenHeight) {
|
|||
if (_audioInput) {
|
||||
glLineWidth(2.0);
|
||||
glBegin(GL_LINES);
|
||||
glColor3f(1,1,1);
|
||||
glColor3f(.93f, .93f, .93f);
|
||||
|
||||
int startX = 20.0;
|
||||
int currentX = startX;
|
||||
|
@ -583,9 +583,9 @@ void Audio::render(int screenWidth, int screenHeight) {
|
|||
float msLeftForAudioOutput = (secondsLeftForAudioOutput + secondsLeftForRingBuffer) * 1000;
|
||||
|
||||
if (_numFramesDisplayStarve == 0) {
|
||||
glColor3f(0, 1, 0);
|
||||
glColor3f(0, .8f, .4f);
|
||||
} else {
|
||||
glColor3f(0.5 + (_numFramesDisplayStarve / 20.0f), 0, 0);
|
||||
glColor3f(0.5 + (_numFramesDisplayStarve / 20.0f), .2f, .4f);
|
||||
_numFramesDisplayStarve--;
|
||||
}
|
||||
|
||||
|
@ -596,44 +596,44 @@ void Audio::render(int screenWidth, int screenHeight) {
|
|||
}
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glVertex2f(startX, topY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth, topY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth, bottomY - 2);
|
||||
glVertex2f(startX, bottomY - 2);
|
||||
glVertex2f(startX + 1, topY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth + 1, topY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth + 1, bottomY - 2);
|
||||
glVertex2f(startX + 1, bottomY - 2);
|
||||
glEnd();
|
||||
|
||||
// Show a yellow bar with the averaged msecs latency you are hearing (from time of packet receipt)
|
||||
glColor3f(1,1,0);
|
||||
glColor3f(1, .8f, 0);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth - 2, topY - 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth + 2, topY - 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth + 2, bottomY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth - 2, bottomY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth - 1, topY - 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth + 3, topY - 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth + 3, bottomY + 2);
|
||||
glVertex2f(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth - 1, bottomY + 2);
|
||||
glEnd();
|
||||
|
||||
char out[40];
|
||||
sprintf(out, "%3.0f\n", _averagedLatency);
|
||||
drawtext(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth - 10, topY - 9, 0.10f, 0, 1, 0, out, 1,1,0);
|
||||
drawtext(startX + _averagedLatency / AUDIO_CALLBACK_MSECS * frameWidth - 10, topY - 9, 0.10f, 0, 1, 2, out, 1, .8f, 0);
|
||||
|
||||
// Show a red bar with the 'start' point of one frame plus the jitter buffer
|
||||
|
||||
glColor3f(1, 0, 0);
|
||||
glColor3f(1, .2f, .4f);
|
||||
int jitterBufferPels = (1.f + (float)getJitterBufferSamples()
|
||||
/ (float) NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL) * frameWidth;
|
||||
sprintf(out, "%.0f\n", getJitterBufferSamples() / SAMPLE_RATE * 1000.f);
|
||||
drawtext(startX + jitterBufferPels - 5, topY - 9, 0.10f, 0, 1, 0, out, 1, 0, 0);
|
||||
drawtext(startX + jitterBufferPels - 5, topY - 9, 0.10f, 0, 1, 2, out, 1, .2f, .4f);
|
||||
sprintf(out, "j %.1f\n", _measuredJitter);
|
||||
if (Menu::getInstance()->getAudioJitterBufferSamples() == 0) {
|
||||
drawtext(startX + jitterBufferPels - 5, bottomY + 12, 0.10f, 0, 1, 0, out, 1, 0, 0);
|
||||
drawtext(startX + jitterBufferPels - 5, bottomY + 12, 0.10f, 0, 1, 2, out, 1, .2f, .4f);
|
||||
} else {
|
||||
drawtext(startX, bottomY + 12, 0.10f, 0, 1, 0, out, 1, 0, 0);
|
||||
drawtext(startX, bottomY + 12, 0.10f, 0, 1, 2, out, 1, .2f, .4f);
|
||||
}
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glVertex2f(startX + jitterBufferPels - 2, topY - 2);
|
||||
glVertex2f(startX + jitterBufferPels + 2, topY - 2);
|
||||
glVertex2f(startX + jitterBufferPels + 2, bottomY + 2);
|
||||
glVertex2f(startX + jitterBufferPels - 2, bottomY + 2);
|
||||
glVertex2f(startX + jitterBufferPels - 1, topY - 2);
|
||||
glVertex2f(startX + jitterBufferPels + 3, topY - 2);
|
||||
glVertex2f(startX + jitterBufferPels + 3, bottomY + 2);
|
||||
glVertex2f(startX + jitterBufferPels - 1, bottomY + 2);
|
||||
glEnd();
|
||||
|
||||
}
|
||||
|
@ -743,7 +743,7 @@ void Audio::renderToolIcon(int screenHeight) {
|
|||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, _micTextureId);
|
||||
glColor3f(1, 1, 1);
|
||||
glColor3f(.93f, .93f, .93f);
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
glTexCoord2f(1, 1);
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace { // .cpp-local
|
|||
int SPACING_LEFT_CAPTION_UNIT = 4; // |######## : | <--> UNIT
|
||||
int PADDING_HORIZ_VALUE = 2; // |<-->X.XX<:-># |
|
||||
|
||||
unsigned const COLOR_TEXT = 0xe0e0e0e0; // ^ ^ ^ ^ ^ ^
|
||||
unsigned const COLOR_TEXT = 0xedededff; // ^ ^ ^ ^ ^ ^
|
||||
unsigned const COLOR_FRAME = 0xe0e0e0b0; // | | |
|
||||
unsigned const COLOR_INDICATOR = 0xc0c0c0b0; // |
|
||||
|
||||
|
@ -38,13 +38,13 @@ namespace { // .cpp-local
|
|||
}
|
||||
|
||||
BandwidthMeter::ChannelInfo BandwidthMeter::_CHANNELS[] = {
|
||||
{ "Audio" , "Kbps", 8000.0 / 1024.0, 0x40ff40d0 },
|
||||
{ "Audio" , "Kbps", 8000.0 / 1024.0, 0x33cc99ff },
|
||||
{ "Avatars" , "Kbps", 8000.0 / 1024.0, 0xffef40c0 },
|
||||
{ "Voxels" , "Kbps", 8000.0 / 1024.0, 0xd0d0d0a0 }
|
||||
};
|
||||
|
||||
BandwidthMeter::BandwidthMeter() :
|
||||
_textRenderer(SANS_FONT_FAMILY, -1, -1, false, TextRenderer::SHADOW_EFFECT),
|
||||
_textRenderer(INCONSOLATA_FONT_FAMILY, -1, QFont::Bold, false),
|
||||
_scaleMaxIndex(INITIAL_SCALE_MAXIMUM_INDEX) {
|
||||
|
||||
_channels = static_cast<ChannelInfo*>( malloc(sizeof(_CHANNELS)) );
|
||||
|
|
|
@ -373,9 +373,18 @@ const glm::vec3 randVector() {
|
|||
}
|
||||
|
||||
static TextRenderer* textRenderer(int mono) {
|
||||
static TextRenderer* monoRenderer = new TextRenderer(MONO_FONT_FAMILY);
|
||||
static TextRenderer* proportionalRenderer = new TextRenderer(SANS_FONT_FAMILY, -1, -1, false, TextRenderer::SHADOW_EFFECT);
|
||||
return mono ? monoRenderer : proportionalRenderer;
|
||||
static TextRenderer* monoRenderer = new TextRenderer(MONO_FONT_FAMILY);
|
||||
static TextRenderer* proportionalRenderer = new TextRenderer(SANS_FONT_FAMILY, -1, -1, false, TextRenderer::SHADOW_EFFECT);
|
||||
static TextRenderer* inconsolataRenderer = new TextRenderer(INCONSOLATA_FONT_FAMILY, -1, QFont::Bold, false);
|
||||
switch (mono) {
|
||||
case 1:
|
||||
return monoRenderer;
|
||||
case 2:
|
||||
return inconsolataRenderer;
|
||||
case 0:
|
||||
default:
|
||||
return proportionalRenderer;
|
||||
}
|
||||
}
|
||||
|
||||
int widthText(float scale, int mono, char const* string) {
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
// the standard mono font family
|
||||
#define MONO_FONT_FAMILY "Courier"
|
||||
|
||||
// the Inconsolata font family
|
||||
#define INCONSOLATA_FONT_FAMILY "Inconsolata"
|
||||
|
||||
void eulerToOrthonormals(glm::vec3 * angles, glm::vec3 * fwd, glm::vec3 * left, glm::vec3 * up);
|
||||
|
||||
float azimuth_to(glm::vec3 head_pos, glm::vec3 source_pos);
|
||||
|
|
Loading…
Reference in a new issue