fix
This commit is contained in:
parent
9546652cc3
commit
defb4b3778
|
@ -1,7 +1,6 @@
|
||||||
package pixelgl
|
package pixelgl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/go-gl/gl/v3.3-core/gl"
|
"github.com/go-gl/gl/v3.3-core/gl"
|
||||||
|
@ -16,7 +15,7 @@ import (
|
||||||
// VertexFormat{"position": {Position, Vec2}, "colr": {Color, Vec4}, "texCoord": {TexCoord, Vec2}}
|
// VertexFormat{"position": {Position, Vec2}, "colr": {Color, Vec4}, "texCoord": {TexCoord, Vec2}}
|
||||||
//
|
//
|
||||||
// Note: vertex array currently doesn't support matrices in vertex format.
|
// Note: vertex array currently doesn't support matrices in vertex format.
|
||||||
type VertexFormat map[string]Attr
|
type VertexFormat []Attr
|
||||||
|
|
||||||
// Size calculates the total size of a single vertex in this vertex format (sum of the sizes of all vertex attributes).
|
// Size calculates the total size of a single vertex in this vertex format (sum of the sizes of all vertex attributes).
|
||||||
func (vf VertexFormat) Size() int {
|
func (vf VertexFormat) Size() int {
|
||||||
|
@ -118,12 +117,7 @@ func NewVertexArray(parent Doer, format VertexFormat, mode VertexDrawMode, usage
|
||||||
gl.BufferData(gl.ARRAY_BUFFER, len(emptyData), gl.Ptr(emptyData), uint32(usage))
|
gl.BufferData(gl.ARRAY_BUFFER, len(emptyData), gl.Ptr(emptyData), uint32(usage))
|
||||||
|
|
||||||
offset := 0
|
offset := 0
|
||||||
for name, attr := range format {
|
for i, attr := range format {
|
||||||
location := gl.GetAttribLocation(ctx.Shader().ID(), gl.Str(name+"\x00"))
|
|
||||||
if location == -1 {
|
|
||||||
return fmt.Errorf("shader does not contain vertex attribute '%s'", name)
|
|
||||||
}
|
|
||||||
|
|
||||||
var size int32
|
var size int32
|
||||||
switch attr.Type {
|
switch attr.Type {
|
||||||
case Float:
|
case Float:
|
||||||
|
@ -137,14 +131,14 @@ func NewVertexArray(parent Doer, format VertexFormat, mode VertexDrawMode, usage
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.VertexAttribPointer(
|
gl.VertexAttribPointer(
|
||||||
uint32(location),
|
uint32(i),
|
||||||
size,
|
size,
|
||||||
gl.FLOAT,
|
gl.FLOAT,
|
||||||
false,
|
false,
|
||||||
int32(va.stride),
|
int32(va.stride),
|
||||||
gl.PtrOffset(offset),
|
gl.PtrOffset(offset),
|
||||||
)
|
)
|
||||||
gl.EnableVertexAttribArray(uint32(location))
|
gl.EnableVertexAttribArray(uint32(i))
|
||||||
offset += attr.Type.Size()
|
offset += attr.Type.Size()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
window.go
12
window.go
|
@ -315,9 +315,9 @@ func (w *Window) Do(sub func(pixelgl.Context)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultVertexFormat = pixelgl.VertexFormat{
|
var defaultVertexFormat = pixelgl.VertexFormat{
|
||||||
"position": {Purpose: pixelgl.Position, Type: pixelgl.Vec2},
|
{Purpose: pixelgl.Position, Type: pixelgl.Vec2},
|
||||||
"color": {Purpose: pixelgl.Color, Type: pixelgl.Vec4},
|
{Purpose: pixelgl.Color, Type: pixelgl.Vec4},
|
||||||
"texCoord": {Purpose: pixelgl.TexCoord, Type: pixelgl.Vec2},
|
{Purpose: pixelgl.TexCoord, Type: pixelgl.Vec2},
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultUniformFormat = pixelgl.UniformFormat{
|
var defaultUniformFormat = pixelgl.UniformFormat{
|
||||||
|
@ -328,9 +328,9 @@ var defaultUniformFormat = pixelgl.UniformFormat{
|
||||||
var defaultVertexShader = `
|
var defaultVertexShader = `
|
||||||
#version 330 core
|
#version 330 core
|
||||||
|
|
||||||
in vec2 position;
|
layout (location = 0) in vec2 position;
|
||||||
in vec4 color;
|
layout (location = 1) in vec4 color;
|
||||||
in vec2 texCoord;
|
layout (location = 2) in vec2 texCoord;
|
||||||
|
|
||||||
out vec4 Color;
|
out vec4 Color;
|
||||||
out vec2 TexCoord;
|
out vec2 TexCoord;
|
||||||
|
|
Loading…
Reference in New Issue