Last active
April 10, 2023 09:38
-
-
Save jpcofr/91e77f3fee32e28ad257db057aba16a0 to your computer and use it in GitHub Desktop.
Build config for raylib & raylib_cpp in macOS 13.3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Description: Build configuration for the "raylib [core] example - World to screen" | |
# using raylib and raylib_cpp from their repositories. | |
# (https://www.raylib.com/examples/core/loader.html?name=core_world_screen) | |
# Compatibility: macOS 13.3 | |
# Dependencies: raylib 4.5.0, raylib_cpp v4.5.0 | |
cmake_minimum_required(VERSION 3.25) | |
project(a_project) | |
set(CMAKE_BUILD_TYPE Debug) | |
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build) | |
set(LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) | |
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) | |
set(EXECUTABLE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) | |
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g") | |
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g") | |
# Find ccache | |
find_program(CCACHE_PROGRAM ccache) | |
if(CCACHE_PROGRAM) | |
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") | |
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}") | |
endif() | |
# Set up external dependencies | |
set(FETCHCONTENT_QUIET FALSE) | |
include(FetchContent) | |
FetchContent_Declare( | |
raylib | |
GIT_REPOSITORY https://github.com/raysan5/raylib.git | |
GIT_TAG 4.5.0 | |
) | |
FetchContent_MakeAvailable(raylib) | |
include_directories(${raylib_SOURCE_DIR}/src) | |
include(FetchContent) | |
FetchContent_Declare( | |
raylib_cpp | |
GIT_REPOSITORY https://github.com/RobLoach/raylib-cpp.git | |
GIT_TAG v4.5.0 | |
) | |
FetchContent_MakeAvailable(raylib_cpp) | |
# Set up build output | |
include_directories(${raylib_cpp_SOURCE_DIR}/include) | |
set(SOURCES src/main.cpp) | |
add_executable(${PROJECT_NAME} ${SOURCES}) | |
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20) | |
if(APPLE) | |
find_library(COCOA_LIBRARY Cocoa) | |
find_library(GLUT_LIBRARY GLUT) | |
find_library(OpenGL_LIBRARY OpenGL) | |
find_library(IOKit_LIBRARY IOKit) | |
find_library(CoreVideo_LIBRARY CoreVideo) | |
target_link_libraries(${PROJECT_NAME} PUBLIC ${raylib_LIBRARIES} raylib raylib_cpp ${COCOA_LIBRARY} ${GLUT_LIBRARY} ${OpenGL_LIBRARY} ${IOKit_LIBRARY} ${CoreVideo_LIBRARY}) | |
else() | |
target_link_libraries(${PROJECT_NAME} PUBLIC ${raylib_LIBRARIES} raylib raylib_cpp) | |
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************************* | |
* | |
* raylib [core] example - World to screen | |
* | |
* Example originally created with raylib 1.3, last time updated with raylib 1.4 | |
* | |
* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, | |
* BSD-like license that allows static linking with closed source software | |
* | |
* Copyright (c) 2015-2023 Ramon Santamaria (@raysan5) | |
* | |
********************************************************************************************/ | |
#include "raylib.h" | |
//------------------------------------------------------------------------------------ | |
// Program main entry point | |
//------------------------------------------------------------------------------------ | |
int main(void) | |
{ | |
// Initialization | |
//-------------------------------------------------------------------------------------- | |
const int screenWidth = 800; | |
const int screenHeight = 450; | |
InitWindow(screenWidth, screenHeight, "raylib [core] example - core world screen"); | |
// Define the camera to look into our 3d world | |
Camera camera = { 0 }; | |
camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position | |
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point | |
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) | |
camera.fovy = 45.0f; // Camera field-of-view Y | |
camera.projection = CAMERA_PERSPECTIVE; // Camera projection type | |
Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; | |
Vector2 cubeScreenPosition = { 0.0f, 0.0f }; | |
DisableCursor(); // Limit cursor to relative movement inside the window | |
SetTargetFPS(60); // Set our game to run at 60 frames-per-second | |
//-------------------------------------------------------------------------------------- | |
// Main game loop | |
while (!WindowShouldClose()) // Detect window close button or ESC key | |
{ | |
// Update | |
//---------------------------------------------------------------------------------- | |
UpdateCamera(&camera, CAMERA_THIRD_PERSON); | |
// Calculate cube screen space position (with a little offset to be in top) | |
cubeScreenPosition = GetWorldToScreen((Vector3){cubePosition.x, cubePosition.y + 2.5f, cubePosition.z}, camera); | |
//---------------------------------------------------------------------------------- | |
// Draw | |
//---------------------------------------------------------------------------------- | |
BeginDrawing(); | |
ClearBackground(RAYWHITE); | |
BeginMode3D(camera); | |
DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); | |
DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON); | |
DrawGrid(10, 1.0f); | |
EndMode3D(); | |
DrawText("Enemy: 100 / 100", (int)cubeScreenPosition.x - MeasureText("Enemy: 100/100", 20)/2, (int)cubeScreenPosition.y, 20, BLACK); | |
DrawText(TextFormat("Cube position in screen space coordinates: [%i, %i]", (int)cubeScreenPosition.x, (int)cubeScreenPosition.y), 10, 10, 20, LIME); | |
DrawText("Text 2d should be always on top of the cube", 10, 40, 20, GRAY); | |
EndDrawing(); | |
//---------------------------------------------------------------------------------- | |
} | |
// De-Initialization | |
//-------------------------------------------------------------------------------------- | |
CloseWindow(); // Close window and OpenGL context | |
//-------------------------------------------------------------------------------------- | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment