initial
This commit is contained in:
parent
cd300d256e
commit
a703659c9d
76 changed files with 87245 additions and 0 deletions
113
examples/models/models_mesh_generation.c
Normal file
113
examples/models/models_mesh_generation.c
Normal file
|
@ -0,0 +1,113 @@
|
|||
/*******************************************************************************************
|
||||
*
|
||||
* raylib example - procedural mesh generation
|
||||
*
|
||||
* This example has been created using raylib 1.8 (www.raylib.com)
|
||||
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
|
||||
*
|
||||
* Copyright (c) 2017 Ramon Santamaria (Ray San)
|
||||
*
|
||||
********************************************************************************************/
|
||||
|
||||
#include "raylib.h"
|
||||
|
||||
#define NUM_MODELS 7 # We generate 7 parametric 3d shapes
|
||||
|
||||
int main()
|
||||
[
|
||||
# Initialization
|
||||
#--------------------------------------------------------------------------------------
|
||||
int screenWidth = 800
|
||||
int screenHeight = 450
|
||||
|
||||
InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh generation")
|
||||
|
||||
# We generate a checked image for texturing
|
||||
Image checked = GenImageChecked(2, 2, 1, 1, RED, GREEN)
|
||||
Texture2D texture = LoadTextureFromImage(checked)
|
||||
UnloadImage(checked)
|
||||
|
||||
Model models[NUM_MODELS]
|
||||
|
||||
models[0] = LoadModelFromMesh(GenMeshPlane(2, 2, 5, 5))
|
||||
models[1] = LoadModelFromMesh(GenMeshCube(2.0, 1.0, 2.0))
|
||||
models[2] = LoadModelFromMesh(GenMeshSphere(2, 32, 32))
|
||||
models[3] = LoadModelFromMesh(GenMeshHemiSphere(2, 16, 16))
|
||||
models[4] = LoadModelFromMesh(GenMeshCylinder(1, 2, 16))
|
||||
models[5] = LoadModelFromMesh(GenMeshTorus(0.25f, 4.0, 16, 32))
|
||||
models[6] = LoadModelFromMesh(GenMeshKnot(1.0, 2.0, 16, 128))
|
||||
|
||||
# Set checked texture as default diffuse component for all models material
|
||||
for (int i = 0 i < NUM_MODELS i++) models[i].material.maps[MAP_DIFFUSE].texture = texture
|
||||
|
||||
# Define the camera to look into our 3d world
|
||||
Camera camera = [[ 5.0, 5.0, 5.0 ], [ 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0 ], 45.0, 0 ]
|
||||
|
||||
# Model drawing position
|
||||
Vector3 position = [ 0.0, 0.0, 0.0 ]
|
||||
|
||||
int currentModel = 0
|
||||
|
||||
SetCameraMode(camera, CAMERA_ORBITAL) # Set a orbital camera mode
|
||||
|
||||
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) # Update internal camera and our camera
|
||||
|
||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
||||
[
|
||||
currentModel = (currentModel + 1)%NUM_MODELS # Cycle between the textures
|
||||
]
|
||||
#----------------------------------------------------------------------------------
|
||||
|
||||
# Draw
|
||||
#----------------------------------------------------------------------------------
|
||||
BeginDrawing()
|
||||
|
||||
ClearBackground(RAYWHITE)
|
||||
|
||||
BeginMode3D(camera)
|
||||
|
||||
DrawModel(models[currentModel], position, 1.0, WHITE)
|
||||
|
||||
DrawGrid(10, 1.0)
|
||||
|
||||
EndMode3D()
|
||||
|
||||
DrawRectangle(30, 400, 310, 30, Fade(SKYBLUE, 0.5f))
|
||||
DrawRectangleLines(30, 400, 310, 30, Fade(DARKBLUE, 0.5f))
|
||||
DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL MODELS", 40, 410, 10, BLUE)
|
||||
|
||||
switch(currentModel)
|
||||
[
|
||||
case 0: DrawText("PLANE", 680, 10, 20, DARKBLUE) break
|
||||
case 1: DrawText("CUBE", 680, 10, 20, DARKBLUE) break
|
||||
case 2: DrawText("SPHERE", 680, 10, 20, DARKBLUE) break
|
||||
case 3: DrawText("HEMISPHERE", 640, 10, 20, DARKBLUE) break
|
||||
case 4: DrawText("CYLINDER", 680, 10, 20, DARKBLUE) break
|
||||
case 5: DrawText("TORUS", 680, 10, 20, DARKBLUE) break
|
||||
case 6: DrawText("KNOT", 680, 10, 20, DARKBLUE) break
|
||||
default: break
|
||||
]
|
||||
|
||||
EndDrawing()
|
||||
#----------------------------------------------------------------------------------
|
||||
]
|
||||
|
||||
# De-Initialization
|
||||
#--------------------------------------------------------------------------------------
|
||||
|
||||
# Unload models data (GPU VRAM)
|
||||
for (int i = 0 i < NUM_MODELS i++) UnloadModel(models[i])
|
||||
|
||||
CloseWindow() # Close window and OpenGL context
|
||||
#--------------------------------------------------------------------------------------
|
||||
|
||||
return 0
|
||||
]
|
Reference in a new issue