Skip to content

Commit 6cefdd0

Browse files
author
Raed Atoui
committed
refactor textures
1 parent 22093b5 commit 6cefdd0

File tree

4 files changed

+34
-115
lines changed

4 files changed

+34
-115
lines changed

sections/getstarted/4.textures.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ func (ht *TexturesEx1) InitGL() error {
170170
return nil
171171
}
172172

173+
func (ht *TexturesEx1) GetSubHeader() string {
174+
return "flip the happy face in the frag shader"
175+
}
176+
173177
type TexturesEx2 struct {
174178
TexturesEx1
175179
}
@@ -219,6 +223,10 @@ func (ht *TexturesEx2) InitGL() error {
219223
return nil
220224
}
221225

226+
func (ht *TexturesEx2) GetSubHeader() string {
227+
return "scale tex coord by 2 and set nearest filter on tex to see individual pixels"
228+
}
229+
222230
type TexturesEx3 struct {
223231
TexturesEx1
224232
}
@@ -271,6 +279,10 @@ type TexturesEx4 struct {
271279
mixValue float32
272280
}
273281

282+
func (ht *TexturesEx3) GetSubHeader() string {
283+
return "scale tex down and test various wrapping"
284+
}
285+
274286
func (ht *TexturesEx4) getShaders() []string {
275287
return []string{"_assets/getting_started/4.textures/texture.vs",
276288
"_assets/getting_started/4.textures/textureex4.frag"}
@@ -345,4 +357,8 @@ func (ht *TexturesEx4) Draw() {
345357
gl.BindVertexArray(ht.vao)
346358
gl.DrawElements(gl.TRIANGLES, 6, gl.UNSIGNED_INT, gl.PtrOffset(0))
347359
gl.BindVertexArray(0)
348-
}
360+
}
361+
362+
func (ht *TexturesEx4) GetSubHeader() string {
363+
return "cross fade tex using up/dwn arrows, setting opacity as frag uniform "
364+
}

sections/getstarted/6.coordinates.go

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -104,59 +104,19 @@ func (hc *HelloCoordinates) InitGL() error {
104104

105105
gl.BindVertexArray(0) // Unbind VAO
106106

107-
// ====================
108107
// Texture 1
109-
// ====================
110-
gl.GenTextures(1, &hc.texture1)
111-
gl.BindTexture(gl.TEXTURE_2D, hc.texture1)
112-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
113-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
114-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
115-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
116-
117-
rgba, err := utils.ImageToPixelData("_assets/images/container.png")
118-
if err != nil {
119-
panic(err)
108+
if tex, err := utils.NewTexture(gl.REPEAT, gl.REPEAT, gl.LINEAR, gl.LINEAR, "_assets/images/container.png"); err != nil {
109+
return err
110+
} else {
111+
hc.texture1 = tex
120112
}
121-
gl.TexImage2D(
122-
gl.TEXTURE_2D,
123-
0,
124-
gl.RGBA,
125-
int32(rgba.Rect.Size().X),
126-
int32(rgba.Rect.Size().Y),
127-
0,
128-
gl.RGBA,
129-
gl.UNSIGNED_BYTE,
130-
gl.Ptr(rgba.Pix))
131-
gl.GenerateMipmap(gl.TEXTURE_2D)
132-
gl.BindTexture(gl.TEXTURE_2D, 0)
133-
134-
// ====================
135-
// Texture 2
136-
// ====================
137-
gl.GenTextures(1, &hc.texture2)
138-
gl.BindTexture(gl.TEXTURE_2D, hc.texture2)
139-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
140-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
141-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
142-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
143113

144-
rgba, err = utils.ImageToPixelData("_assets/images/awesomeface.png")
145-
if err != nil {
114+
// Texture 2
115+
if tex, err := utils.NewTexture(gl.REPEAT, gl.REPEAT, gl.LINEAR, gl.LINEAR, "_assets/images/awesomeface.png"); err != nil {
146116
return err
117+
} else {
118+
hc.texture2 = tex
147119
}
148-
gl.TexImage2D(
149-
gl.TEXTURE_2D,
150-
0,
151-
gl.RGBA,
152-
int32(rgba.Rect.Size().X),
153-
int32(rgba.Rect.Size().Y),
154-
0,
155-
gl.RGBA,
156-
gl.UNSIGNED_BYTE,
157-
gl.Ptr(rgba.Pix))
158-
gl.GenerateMipmap(gl.TEXTURE_2D)
159-
gl.BindTexture(gl.TEXTURE_2D, 0)
160120

161121
return nil
162122
}

sections/getstarted/7.camera.go

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -122,59 +122,19 @@ func (hc *HelloCamera) InitGL() error {
122122

123123
gl.BindVertexArray(0) // Unbind VAO
124124

125-
// ====================
126125
// Texture 1
127-
// ====================
128-
gl.GenTextures(1, &hc.texture1)
129-
gl.BindTexture(gl.TEXTURE_2D, hc.texture1)
130-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
131-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
132-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
133-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
134-
135-
rgba, err := utils.ImageToPixelData("_assets/images/container.png")
136-
if err != nil {
126+
if tex, err := utils.NewTexture(gl.REPEAT, gl.REPEAT, gl.LINEAR, gl.LINEAR, "_assets/images/container.png"); err != nil {
137127
return err
128+
} else {
129+
hc.texture1 = tex
138130
}
139-
gl.TexImage2D(
140-
gl.TEXTURE_2D,
141-
0,
142-
gl.RGBA,
143-
int32(rgba.Rect.Size().X),
144-
int32(rgba.Rect.Size().Y),
145-
0,
146-
gl.RGBA,
147-
gl.UNSIGNED_BYTE,
148-
gl.Ptr(rgba.Pix))
149-
gl.GenerateMipmap(gl.TEXTURE_2D)
150-
gl.BindTexture(gl.TEXTURE_2D, 0)
151131

152-
// ====================
153132
// Texture 2
154-
// ====================
155-
gl.GenTextures(1, &hc.texture2)
156-
gl.BindTexture(gl.TEXTURE_2D, hc.texture2)
157-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
158-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
159-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
160-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
161-
162-
rgba, err = utils.ImageToPixelData("_assets/images/awesomeface.png")
163-
if err != nil {
133+
if tex, err := utils.NewTexture(gl.REPEAT, gl.REPEAT, gl.LINEAR, gl.LINEAR, "_assets/images/awesomeface.png"); err != nil {
164134
return err
135+
} else {
136+
hc.texture2 = tex
165137
}
166-
gl.TexImage2D(
167-
gl.TEXTURE_2D,
168-
0,
169-
gl.RGBA,
170-
int32(rgba.Rect.Size().X),
171-
int32(rgba.Rect.Size().Y),
172-
0,
173-
gl.RGBA,
174-
gl.UNSIGNED_BYTE,
175-
gl.Ptr(rgba.Pix))
176-
gl.GenerateMipmap(gl.TEXTURE_2D)
177-
gl.BindTexture(gl.TEXTURE_2D, 0)
178138

179139
return nil
180140
}

utils/model.go

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -423,26 +423,9 @@ func (m *Model) loadMaterialTextures(ms *assimp.Material, tm assimp.TextureMappi
423423

424424
func (m *Model) textureFromFile(f string) uint32 {
425425
//Generate texture ID and load texture data
426-
var textureID uint32
427-
428-
gl.GenTextures(1, &textureID)
429-
rgba, err := ImageToPixelData(f)
430-
if err != nil {
426+
if tex, err := NewTexture(gl.REPEAT, gl.REPEAT, gl.LINEAR_MIPMAP_LINEAR, gl.LINEAR, f); err != nil {
431427
panic(err)
428+
} else {
429+
return tex
432430
}
433-
width := int32(rgba.Rect.Size().X)
434-
height := int32(rgba.Rect.Size().Y)
435-
// Assign texture to ID
436-
gl.BindTexture(gl.TEXTURE_2D, textureID)
437-
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGB, width, height, 0, gl.RGB, gl.UNSIGNED_BYTE, gl.Ptr(rgba.Pix))
438-
gl.GenerateMipmap(gl.TEXTURE_2D)
439-
440-
// Parameters
441-
442-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
443-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
444-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR)
445-
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
446-
gl.BindTexture(gl.TEXTURE_2D, 0)
447-
return textureID
448431
}

0 commit comments

Comments
 (0)