summaryrefslogtreecommitdiff
path: root/examples/rlgl/main.lua
blob: 4b59419b763fba33c05838dc90f5bf83282594a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
-- Work In Progress!

local monitor = 0
local texture = -1
local triSize = 32.0
local vertices = {
	0.0, 0.0, 0.0,
	0.0, 0.0, triSize,
	triSize, 0.0, triSize
}
local colors = {
	255, 0, 0,
	0, 255, 0,
	0, 0, 255
}

local VBO_VERTEX_POS = 0
local VBO_COLOR_POS = 1

local mesh = {
	vaoId = -1,
	vboIds = {
		vertices = -1,
		colors = -1,
	}
}

local function uploadMesh()
	mesh.vaoId = RL.rlLoadVertexArray()

	RL.rlEnableVertexArray( mesh.vaoId )
	
	-- Vertices.
	local vertexBuffer = RL.LoadBuffer( vertices, RL.BUFFER_FLOAT )
	mesh.vboIds.vertices = RL.rlLoadVertexBuffer( vertexBuffer, false )
	RL.rlSetVertexAttribute( VBO_VERTEX_POS, 3, RL.RL_FLOAT, false, 0, 0 )
	RL.rlEnableVertexAttribute( VBO_VERTEX_POS )

	-- Colors.
	local colorBuffer = RL.LoadBuffer( colors, RL.BUFFER_UNSIGNED_CHAR )
	mesh.vboIds.colors = RL.rlLoadVertexBuffer( colorBuffer, false )
	RL.rlSetVertexAttribute( VBO_COLOR_POS, 4, RL.RL_UNSIGNED_BYTE, false, 0, 0 )
	RL.rlEnableVertexAttribute( VBO_COLOR_POS )

	RL.rlDisableVertexArray()

	print( "\nMesh:" )
	print( "\tvaoId: "..mesh.vaoId )
	print( "\tvboIds.vertices: "..mesh.vboIds.vertices )
	print( "\tvboIds.colors: "..mesh.vboIds.colors )
end

function RL.init()
	local mPos = RL.GetMonitorPosition( monitor )
	local mSize = RL.GetMonitorSize( monitor )
	local winSize = RL.GetScreenSize()

	RL.SetWindowState( RL.FLAG_WINDOW_RESIZABLE )
	RL.SetWindowState( RL.FLAG_VSYNC_HINT )
	RL.SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } )

	uploadMesh()
end

local function drawMesh()
end

function RL.draw()
	RL.ClearBackground( { 100, 150, 100 } )
end

-- You need to manually free resources.
function RL.exit()
	if 0 <= mesh.vaoId then
		RL.rlUnloadVertexArray( mesh.vaoId )
	end

	for _, vboId in pairs( mesh.vboIds ) do
		if 0 <= vboId then
			RL.rlUnloadVertexBuffer( vboId )
		end
	end
end