Debug: Support frame tracing via Tracy
Use CMake FetchContent to pull tracy sources and build it if frame tracing is enabled. As frame tracing requires annotations in the code, create a wrapper that replaces them with our own defines that are empty when tracing is not enabled.
This commit is contained in:
parent
8199fd3449
commit
7241ed7321
4 changed files with 50 additions and 0 deletions
|
@ -27,6 +27,22 @@ else ()
|
|||
ImGui-SFML::ImGui-SFML)
|
||||
endif()
|
||||
|
||||
if(TRACE_FRAMES)
|
||||
message("Building with Tracy")
|
||||
add_compile_definitions(TRACE_FRAMES)
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
Tracy
|
||||
GIT_REPOSITORY https://github.com/wolfpld/tracy.git
|
||||
GIT_TAG d46ffb4e9f132fc95bdd7d04207d8d669a9d4100
|
||||
)
|
||||
FetchContent_MakeAvailable(Tracy)
|
||||
|
||||
set(LIBS ${LIBS}
|
||||
TracyClient)
|
||||
endif()
|
||||
|
||||
add_compile_options(-Wall -Wextra)
|
||||
|
||||
add_executable(raycasting
|
||||
|
|
24
FrameTracing.h
Normal file
24
FrameTracing.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
//
|
||||
// Created by trotfunky on 05/02/24.
|
||||
//
|
||||
|
||||
#ifndef RAYCASTING_FRAMETRACING_H
|
||||
#define RAYCASTING_FRAMETRACING_H
|
||||
|
||||
/*
|
||||
* Basic wrapper to allow enabling and disabling frame tracing using
|
||||
* Tracy.
|
||||
* https://github.com/wolfpld/tracy
|
||||
*/
|
||||
#ifdef TRACE_FRAMES
|
||||
#include "tracy/Tracy.hpp"
|
||||
#define FTrace_FrameMark FrameMark
|
||||
#define FTrace_Scope ZoneScoped
|
||||
#define FTrace_NamedScope(name) ZoneScopedN(name)
|
||||
#else
|
||||
#define FTrace_FrameMark
|
||||
#define FTrace_Scope
|
||||
#define FTrace_NamedScope(name)
|
||||
#endif /* TRACE_FRAMES */
|
||||
|
||||
#endif //RAYCASTING_FRAMETRACING_H
|
|
@ -9,6 +9,7 @@
|
|||
#include <imgui.h>
|
||||
#include <imgui-SFML.h>
|
||||
#endif
|
||||
#include "FrameTracing.h"
|
||||
|
||||
World::World(int w, int h, sf::Color groundColor, sf::Color ceilingColor, std::vector<BlockType> worldMap) :
|
||||
player(0,0,0), w(w), h(h), map(std::move(worldMap)),
|
||||
|
@ -117,6 +118,7 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
|
|||
* built around left-handed axes (x→,y↓), so the rendered world is
|
||||
* mirrored. This also explains some weird signs for rotations.
|
||||
*/
|
||||
FTrace_Scope;
|
||||
/* Offsets to get back on the grid from the ray's origin. */
|
||||
float hOffsetX;
|
||||
float hOffsetY;
|
||||
|
@ -234,6 +236,7 @@ RaycastResult World::castRay(float originX, float originY, float orientation) co
|
|||
void World::fillColumn(sf::RenderWindow& window, unsigned int column,
|
||||
float scale, sf::Color fillColor)
|
||||
{
|
||||
FTrace_Scope;
|
||||
float columnHeight = static_cast<float>(window.getSize().y)*scale;
|
||||
sf::RectangleShape& pixelColumn = renderColumns[column];
|
||||
if (pixelColumn.getSize().y != columnHeight) {
|
||||
|
@ -249,6 +252,7 @@ void World::fillColumn(sf::RenderWindow& window, unsigned int column,
|
|||
|
||||
void World::render(sf::RenderWindow& window)
|
||||
{
|
||||
FTrace_Scope;
|
||||
float windowX = static_cast<float>(window.getSize().x);
|
||||
float windowY = static_cast<float>(window.getSize().y);
|
||||
/*
|
||||
|
@ -291,6 +295,7 @@ void World::render(sf::RenderWindow& window)
|
|||
}
|
||||
|
||||
void World::step(const float& stepTime) {
|
||||
FTrace_Scope;
|
||||
player.move(player.currentMoveSpeedX*stepTime,
|
||||
player.currentMoveSpeedY*stepTime);
|
||||
/* Undo last move if the player would end up in a wall. */
|
||||
|
|
5
main.cpp
5
main.cpp
|
@ -5,6 +5,7 @@
|
|||
#include <imgui.h>
|
||||
#include <imgui-SFML.h>
|
||||
#endif
|
||||
#include "FrameTracing.h"
|
||||
|
||||
#include "World.h"
|
||||
|
||||
|
@ -37,8 +38,11 @@ int main()
|
|||
sf::Clock frameTime;
|
||||
while (window.isOpen())
|
||||
{
|
||||
FTrace_NamedScope("MainLoop");
|
||||
|
||||
while (window.pollEvent(event))
|
||||
{
|
||||
FTrace_NamedScope("EventLoop");
|
||||
if (event.type == sf::Event::Closed) {
|
||||
window.close();
|
||||
continue;
|
||||
|
@ -135,6 +139,7 @@ int main()
|
|||
#endif
|
||||
|
||||
window.display();
|
||||
FTrace_FrameMark;
|
||||
}
|
||||
|
||||
#ifdef IMGUI
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue