8000 wip · raedatoui/learn-opengl-golang@ee9e348 · GitHub
[go: up one dir, main page]

Skip to content

Commit ee9e348

Browse files
author
HUGE | Raed Atoui
committed
wip
1 parent 168c4e1 commit ee9e348

File tree

4 files changed

+78
-88
lines changed

4 files changed

+78
-88
lines changed

sections/base.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"github.com/raedatoui/glutils"
88
)
99

10-
1110
// WIDTH is the width of the window
1211
const WIDTH = 1280
1312

sections/getstarted/3.shaders.go

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010

1111
type HelloShaders struct {
1212
sections.BaseSketch
13-
vao, vbo uint32
14-
shader glutils.Shader
13+
shader *glutils.Shader
14+
va glutils.VertexArray
1515
}
1616

1717
func (hs *HelloShaders) createShader(v, f string) error {
@@ -31,29 +31,26 @@ func (hs *HelloShaders) createBuffers() {
3131
-0.5, -0.5, 0.0, 0.0, 1.0, 0.0, // Bottom Left
3232
0.0, 0.5, 0.0, 0.0, 0.0, 1.0, // Top
3333
}
34-
gl.GenVertexArrays(1, &hs.vao)
35-
gl.GenBuffers(1, &hs.vbo)
36-
37-
gl.BindVertexArray(hs.vao)
38-
39-
gl.BindBuffer(gl.ARRAY_BUFFER, hs.vbo)
40-
gl.BufferData(gl.ARRAY_BUFFER, len(vertices)*glutils.GL_FLOAT32_SIZE, gl.Ptr(vertices), gl.STATIC_DRAW)
41-
42-
// position uniform
43-
gl.VertexAttribPointer(0, 3, gl.FLOAT, false, 6*glutils.GL_FLOAT32_SIZE, gl.PtrOffset(0))
44-
gl.EnableVertexAttribArray(0)
45-
46-
//color uniform
47-
gl.VertexAttribPointer(1, 3, gl.FLOAT, false, 6*glutils.GL_FLOAT32_SIZE, gl.PtrOffset(3*glutils.GL_FLOAT32_SIZE))
48-
gl.EnableVertexAttribArray(1)
34+
attr := make(map[uint32]int32)
35+
attr[hs.shader.Attributes["position"]] = 3
36+
attr[hs.shader.Attributes["color"]] = 3
37+
hs.va = glutils.VertexArray{
38+
Data: vertices,
39+
Stride: 6,
40+
Normalized: false,
41+
DrawMode: gl.STATIC_DRAW,
42+
Attributes: attr,
43+
}
4944

50-
gl.BindVertexArray(0)
45+
hs.va.Setup()
5146
}
5247

5348
func (hs *HelloShaders) InitGL() error {
5449
hs.Name = "3a. Shaders"
5550

56-
if err := hs.createShader("_assets/getting_started/3.shaders/basic.vs", "_assets/getting_started/3.shaders/basic.frag"); err != nil {
51+
if err := hs.createShader(
52+
"_assets/getting_started/3.shaders/basic.vs",
53+
"_assets/getting_started/3.shaders/basic.frag"); err != nil {
5754
return err
5855
}
5956

@@ -68,15 +65,14 @@ func (hs *HelloShaders) Draw() {
6865

6966
// Draw the triangle
7067
gl.UseProgram(hs.shader.Program)
71-
gl.BindVertexArray(hs.vao)
68+
gl.BindVertexArray(hs.va.Vao)
7269
gl.DrawArrays(gl.TRIANGLES, 0, 3)
7370
gl.BindVertexArray(0)
7471
}
7572

7673
func (hs *HelloShaders) Close() {
77-
gl.DeleteVertexArrays(1, &hs.vao)
78-
gl.DeleteBuffers(1, &hs.vbo)
79-
gl.DeleteProgram(hs.shader.Program)
74+
hs.shader.Delete()
75+
hs.va.Delete()
8076
}
8177

8278
type ShaderEx1 struct {
@@ -88,10 +84,11 @@ type ShaderEx1 struct {
8884

8985
func (hs *ShaderEx1) InitGL() error {
9086
hs.Name = "3b. Shaders Ex1"
91-
if err := hs.createShader("_assets/getting_started/3.shaders/basic.vs", "_assets/getting_started/3.shaders/uniform.frag"); err != nil {
87+
if err := hs.createShader(
88+
"_assets/getting_started/3.shaders/basic.vs",
89+
"_assets/getting_started/3.shaders/uniform.frag"); err != nil {
9290
return err
9391
}
94-
hs.shader.AddUniform("ourColor")
9592

9693
hs.createBuffers()
9794
return nil
@@ -108,8 +105,8 @@ func (hs *ShaderEx1) Draw() {
108105

109106
// Draw the triangle
110107
gl.UseProgram(hs.shader.Program)
111-
gl.Uniform4f(hs.shader.GetUniform("ourColor"), 0.0, hs.greenValue, 0.0, 1.0)
112-
gl.BindVertexArray(hs.vao)
108+
gl.Uniform4f(hs.shader.Uniforms["ourColor"], 0.0, hs.greenValue, 0.0, 1.0)
109+
gl.BindVertexArray(hs.va.Vao)
113110
gl.DrawArrays(gl.TRIANGLES, 0, 3)
114111
gl.BindVertexArray(0)
115112
}
@@ -124,7 +121,9 @@ type ShaderEx2 struct {
124121

125122
func (hs *ShaderEx2) InitGL() error {
126123
hs.Name = "3c. Shaders Ex2"
127-
if err := hs.createShader("_assets/getting_started/3.shaders/reverse.vs", "_assets/getting_started/3.shaders/basic.frag"); err != nil {
124+
if err := hs.createShader(
125+
"_assets/getting_started/3.shaders/reverse.vs",
126+
"_assets/getting_started/3.shaders/basic.frag"); err != nil {
128127
return err
129128
}
130129

@@ -139,14 +138,16 @@ type ShaderEx3 struct {
139138

140139
func (hs *ShaderEx3) InitGL() error {
141140
hs.Name = "3b. Shaders Ex3"
142-
if err := hs.createShader("_assets/getting_started/3.shaders/offset.vs", "_assets/getting_started/3.shaders/basic.frag"); err != nil {
141+
if err := hs.createShader(
142+
"_assets/getting_started/3.shaders/offset.vs",
143+
"_assets/getting_started/3.shaders/basic.frag"); err != nil {
143144
return err
144145
}
145146

146147
hs.createBuffers()
147148

148149
gl.UseProgram(hs.shader.Program)
149-
gl.Uniform1f(hs.shader.GetUniform("xOffset"), 0.5)
150+
gl.Uniform1f(hs.shader.Uniforms["xOffset"], 0.5)
150151

151152
return nil
152153
}
@@ -157,7 +158,9 @@ type ShaderEx4 struct {
157158

158159
func (hs *ShaderEx4) InitGL() error {
159160
hs.Name = "3c. Shaders Ex4"
160-
if err := hs.createShader("_assets/getting_started/3.shaders/ex4.vs", "_assets/getting_started/3.shaders/ex4.frag"); err != nil {
161+
if err := hs.createShader(
162+
"_assets/getting_started/3.shaders/ex4.vs",
163+
"_assets/getting_started/3.shaders/ex4.frag"); err != nil {
161164
return err
162165
}
163166

sections/getstarted/4.textures.go

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99

1010
type HelloTextures struct {
1111
sections.BaseSketch
12-
shader uint32
13-
vao, vbo, ebo uint32
12+
shader glutils.Shader
13+
va glutils.VertexArray
1414
texture1, texture2 uint32
1515
texLoc1, texLoc2 int32
1616
}
@@ -36,41 +36,31 @@ func (ht *HelloTextures) createBuffers(vertices []float32) {
3636
1, 2, 3, // Second Triangle
3737
}
3838

39-
gl.GenVertexArrays(1, &ht.vao)
40-
gl.GenBuffers(1, &ht.vbo)
41-
gl.GenBuffers(1, &ht.ebo)
42-
43-
gl.BindVertexArray(ht.vao)
44-
45-
gl.BindBuffer(gl.ARRAY_BUFFER, ht.vbo)
46-
gl.BufferData(gl.ARRAY_BUFFER, len(vertices)*glutils.GL_FLOAT32_SIZE, gl.Ptr(vertices), gl.STATIC_DRAW)
47-
48-
gl.BindBuffer(gl.ELEMENT_ARRAY_BUFFER, ht.ebo)
49-
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, len(indices)*glutils.GL_FLOAT32_SIZE, gl.Ptr(indices), gl.STATIC_DRAW)
50-
51-
// Position attribute
52-
gl.VertexAttribPointer(0, 3, gl.FLOAT, false, 8*glutils.GL_FLOAT32_SIZE, gl.PtrOffset(0))
53-
gl.EnableVertexAttribArray(0)
54-
// Color attribute
55-
gl.VertexAttribPointer(1, 3, gl.FLOAT, false, 8*glutils.GL_FLOAT32_SIZE, gl.PtrOffset(3*glutils.GL_FLOAT32_SIZE))
56-
gl.EnableVertexAttribArray(1)
57-
// TexCoord attribute
58-
gl.VertexAttribPointer(2, 2, gl.FLOAT, false, 8*glutils.GL_FLOAT32_SIZE, gl.PtrOffset(6*glutils.GL_FLOAT32_SIZE))
59-
gl.EnableVertexAttribArray(2)
60-
61-
gl.BindVertexArray(0) // Unbind VAO
39+
attr := make(map[uint32]int32)
40+
attr[ht.shader.Attributes["position"]] = 3
41+
attr[ht.shader.Attributes["color"]] = 3
42+
attr[ht.shader.Attributes["texCoord"]] = 2
43+
44+
v := glutils.VertexArray{
45+
Data: vertices,
46+
Indices: indices,
47+
Stride: 8,
48+
Normalized: false,
49+
DrawMode: gl.STATIC_DRAW,
50+
Attributes: attr,
51+
}
52+
v.Setup()
6253
}
6354

6455
func (ht *HelloTextures) InitGL() error {
6556
ht.Name = "4. Textures"
6657

6758
var err error
6859
shaders := ht.getShaders()
69-
ht.shader, err = glutils.Shader(shaders[0], shaders[1], "")
60+
ht.shader, err = glutils.NewShader(shaders[0], shaders[1], "")
7061
if err != nil {
7162
return err
7263
}
73-
gl.UseProgram(ht.shader)
7464

7565
ht.createBuffers(ht.getVertices())
7666

@@ -81,7 +71,7 @@ func (ht *HelloTextures) InitGL() error {
8171
return err
8272
} else {
8373
ht.texture1 = tex
84-
ht.texLoc1 = gl.GetUniformLocation(ht.shader, gl.Str("ourTexture1\x00"))
74+
ht.texLoc1 = ht.shader.Uniforms["ourTexture1"]
8575
}
8676

8777
// ====================
@@ -91,7 +81,7 @@ func (ht *HelloTextures) InitGL() error {
9181
return err
9282
} else {
9383
ht.texture2 = tex
94-
ht.texLoc2 = gl.GetUniformLocation(ht.shader, gl.Str("ourTexture2\x00"))
84+
ht.texLoc1 = ht.shader.Uniforms["ourTexture2"]
9585
}
9686

9787
return nil
@@ -111,7 +101,7 @@ func (ht *HelloTextures) Draw() {
111101
gl.Uniform1i(ht.texLoc2, 1)
112102

113103
// Activate shader
114-
gl.UseProgram(ht.shader)
104+
gl.UseProgram(ht.shader.Program)
115105

116106
// Draw container
117107
gl.BindVertexArray(ht.vao)
@@ -123,7 +113,7 @@ func (ht *HelloTextures) Close() {
123113
gl.DeleteVertexArrays(1, &ht.vao)
124114
gl.DeleteBuffers(1, &ht.vbo)
125115
gl.DeleteBuffers(1, &ht.ebo)
126-
gl.DeleteProgram(ht.shader)
116+
gl.DeleteProgram(ht.shader.Program)
127117
}
128118

129119
type TexturesEx1 struct {

tutorial.go

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import (
1414
"github.com/raedatoui/glutils"
1515
"github.com/raedatoui/learn-opengl-golang/sections"
1616
"github.com/raedatoui/learn-opengl-golang/sections/getstarted"
17-
"github.com/raedatoui/learn-opengl-golang/sections/lighting"
18-
"github.com/raedatoui/learn-opengl-golang/sections/modelloading"
1917
)
2018

2119
var (
@@ -29,7 +27,6 @@ var (
2927
wireframe int32
3028
)
3129

32-
3330
func init() {
3431
// This is needed to arrange that main() runs on main thread.
3532
// See documentation for functions that are only allowed to be called from the main thread.
@@ -168,6 +165,7 @@ func setup() (*glfw.Window, error) {
168165
func setupSlides() []sections.Slide {
169166
// make a slice of pointers to sketch instances
170167
return []sections.Slide{
168+
new(getstarted.HelloShaders),
171169
new(sections.TitleSlide),
172170
new(getstarted.HelloCube),
173171
new(sections.TitleSlide),
@@ -183,28 +181,28 @@ func setupSlides() []sections.Slide {
183181
new(getstarted.ShaderEx3),
184182
new(getstarted.ShaderEx4),
185183

186-
new(getstarted.HelloTextures),
187-
new(getstarted.TexturesEx1),
188-
new(getstarted.TexturesEx2),
189-
new(getstarted.TexturesEx3),
190-
new(getstarted.TexturesEx4),
191-
192-
new(getstarted.HelloTransformations),
193-
new(getstarted.HelloCoordinates),
194-
new(getstarted.HelloCamera),
195-
196-
new(sections.TitleSlide),
197-
new(lighting.LightingColors),
198-
new(lighting.BasicSpecular),
199-
new(lighting.Materials),
200-
201-
new(sections.TitleSlide),
202-
new(modelloading.ModelLoading),
203-
204-
new(sections.TitleSlide),
205-
new(sections.TitleSlide),
206-
new(sections.TitleSlide),
207-
new(sections.TitleSlide),
184+
//new(getstarted.HelloTextures),
185+
//new(getstarted.TexturesEx1),
186+
//new(getstarted.TexturesEx2),
187+
//new(getstarted.TexturesEx3),
188+
//new(getstarted.TexturesEx4),
189+
//
190+
//new(getstarted.HelloTransformations),
191+
//new(getstarted.HelloCoordinates),
192+
//new(getstarted.HelloCamera),
193+
//
194+
//new(sections.TitleSlide),
195+
//new(lighting.LightingColors),
196+
//new(lighting.BasicSpecular),
197+
//new(lighting.Materials),
198+
//
199+
//new(sections.TitleSlide),
200+
//new(modelloading.ModelLoading),
201+
//
202+
//new(sections.TitleSlide),
203+
//new(sections.TitleSlide),
204+
//new(sections.TitleSlide),
205+
//new(sections.TitleSlide),
208206
}
209207
}
210208

0 commit comments

Comments
 (0)
0