mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 04:57:26 +01:00
opengl: Move members to variables
This commit is contained in:
parent
fbc1a4238c
commit
86144a1cd6
@ -26,12 +26,12 @@ const (
|
|||||||
FilterLinear // linear filter
|
FilterLinear // linear filter
|
||||||
)
|
)
|
||||||
|
|
||||||
func glFilter(c *opengl.Context, filter Filter) opengl.Filter {
|
func glFilter(filter Filter) opengl.Filter {
|
||||||
switch filter {
|
switch filter {
|
||||||
case FilterNearest:
|
case FilterNearest:
|
||||||
return c.Nearest
|
return opengl.Nearest
|
||||||
case FilterLinear:
|
case FilterLinear:
|
||||||
return c.Linear
|
return opengl.Linear
|
||||||
}
|
}
|
||||||
panic("not reach")
|
panic("not reach")
|
||||||
}
|
}
|
||||||
|
7
image.go
7
image.go
@ -23,7 +23,6 @@ import (
|
|||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/internal/graphics"
|
"github.com/hajimehoshi/ebiten/internal/graphics"
|
||||||
"github.com/hajimehoshi/ebiten/internal/graphics/opengl"
|
"github.com/hajimehoshi/ebiten/internal/graphics/opengl"
|
||||||
"github.com/hajimehoshi/ebiten/internal/ui"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type images struct {
|
type images struct {
|
||||||
@ -79,7 +78,7 @@ func (i *images) restorePixels(context *opengl.Context) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for img := range i.images {
|
for img := range i.images {
|
||||||
if err := img.restorePixels(context); err != nil {
|
if err := img.restorePixels(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,7 +209,7 @@ func NewImage(width, height int, filter Filter) (*Image, error) {
|
|||||||
}
|
}
|
||||||
imageM.Lock()
|
imageM.Lock()
|
||||||
defer imageM.Unlock()
|
defer imageM.Unlock()
|
||||||
image.image, err = graphics.NewImage(width, height, glFilter(ui.GLContext(), filter))
|
image.image, err = graphics.NewImage(width, height, glFilter(filter))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -251,7 +250,7 @@ func NewImageFromImage(source image.Image, filter Filter) (*Image, error) {
|
|||||||
imageM.Lock()
|
imageM.Lock()
|
||||||
defer imageM.Unlock()
|
defer imageM.Unlock()
|
||||||
var err error
|
var err error
|
||||||
img.image, err = graphics.NewImageFromImage(rgbaImg, glFilter(ui.GLContext(), filter))
|
img.image, err = graphics.NewImageFromImage(rgbaImg, glFilter(filter))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// TODO: texture should be removed here?
|
// TODO: texture should be removed here?
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -133,7 +133,7 @@ func (i *imageImpl) savePixels(context *opengl.Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *imageImpl) restorePixels(context *opengl.Context) error {
|
func (i *imageImpl) restorePixels() error {
|
||||||
if i.screen {
|
if i.screen {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -146,14 +146,14 @@ func (i *imageImpl) restorePixels(context *opengl.Context) error {
|
|||||||
copy(img.Pix[j*img.Stride:], i.pixels[j*i.width*4:(j+1)*i.width*4])
|
copy(img.Pix[j*img.Stride:], i.pixels[j*i.width*4:(j+1)*i.width*4])
|
||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
i.image, err = graphics.NewImageFromImage(img, glFilter(context, i.filter))
|
i.image, err = graphics.NewImageFromImage(img, glFilter(i.filter))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
i.image, err = graphics.NewImage(i.width, i.height, glFilter(context, i.filter))
|
i.image, err = graphics.NewImage(i.width, i.height, glFilter(i.filter))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ func (q *commandQueue) Flush(context *opengl.Context) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if 0 < len(vertices) {
|
if 0 < len(vertices) {
|
||||||
context.BufferSubData(context.ArrayBuffer, vertices)
|
context.BufferSubData(opengl.ArrayBuffer, vertices)
|
||||||
}
|
}
|
||||||
// NOTE: WebGL doesn't seem to have Check gl.MAX_ELEMENTS_VERTICES or gl.MAX_ELEMENTS_INDICES so far.
|
// NOTE: WebGL doesn't seem to have Check gl.MAX_ELEMENTS_VERTICES or gl.MAX_ELEMENTS_INDICES so far.
|
||||||
// Let's use them to compare to len(quads) in the future.
|
// Let's use them to compare to len(quads) in the future.
|
||||||
@ -122,7 +122,7 @@ func (c *drawImageCommand) Exec(context *opengl.Context) error {
|
|||||||
defer p.end()
|
defer p.end()
|
||||||
// TODO: We should call glBindBuffer here?
|
// TODO: We should call glBindBuffer here?
|
||||||
// The buffer is already bound at begin() but it is counterintuitive.
|
// The buffer is already bound at begin() but it is counterintuitive.
|
||||||
context.DrawElements(context.Triangles, 6*n, theCommandQueue.indexOffsetInBytes)
|
context.DrawElements(opengl.Triangles, 6*n, theCommandQueue.indexOffsetInBytes)
|
||||||
theCommandQueue.indexOffsetInBytes += 6 * n * 2
|
theCommandQueue.indexOffsetInBytes += 6 * n * 2
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
package opengl
|
package opengl
|
||||||
|
|
||||||
type Context struct {
|
var (
|
||||||
Nearest Filter
|
Nearest Filter
|
||||||
Linear Filter
|
Linear Filter
|
||||||
VertexShader ShaderType
|
VertexShader ShaderType
|
||||||
@ -25,12 +25,16 @@ type Context struct {
|
|||||||
StaticDraw BufferUsage
|
StaticDraw BufferUsage
|
||||||
Triangles Mode
|
Triangles Mode
|
||||||
Lines Mode
|
Lines Mode
|
||||||
|
|
||||||
zero operation
|
zero operation
|
||||||
one operation
|
one operation
|
||||||
srcAlpha operation
|
srcAlpha operation
|
||||||
dstAlpha operation
|
dstAlpha operation
|
||||||
oneMinusSrcAlpha operation
|
oneMinusSrcAlpha operation
|
||||||
oneMinusDstAlpha operation
|
oneMinusDstAlpha operation
|
||||||
|
)
|
||||||
|
|
||||||
|
type Context struct {
|
||||||
locationCache *locationCache
|
locationCache *locationCache
|
||||||
screenFramebuffer Framebuffer // This might not be the default frame buffer '0' (e.g. iOS).
|
screenFramebuffer Framebuffer // This might not be the default frame buffer '0' (e.g. iOS).
|
||||||
lastFramebuffer Framebuffer
|
lastFramebuffer Framebuffer
|
||||||
|
@ -43,28 +43,32 @@ func (p Program) id() programID {
|
|||||||
return programID(p)
|
return programID(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Nearest = gl.NEAREST
|
||||||
|
Linear = gl.LINEAR
|
||||||
|
VertexShader = gl.VERTEX_SHADER
|
||||||
|
FragmentShader = gl.FRAGMENT_SHADER
|
||||||
|
ArrayBuffer = gl.ARRAY_BUFFER
|
||||||
|
ElementArrayBuffer = gl.ELEMENT_ARRAY_BUFFER
|
||||||
|
DynamicDraw = gl.DYNAMIC_DRAW
|
||||||
|
StaticDraw = gl.STATIC_DRAW
|
||||||
|
Triangles = gl.TRIANGLES
|
||||||
|
Lines = gl.LINES
|
||||||
|
|
||||||
|
zero = gl.ZERO
|
||||||
|
one = gl.ONE
|
||||||
|
srcAlpha = gl.SRC_ALPHA
|
||||||
|
dstAlpha = gl.DST_ALPHA
|
||||||
|
oneMinusSrcAlpha = gl.ONE_MINUS_SRC_ALPHA
|
||||||
|
oneMinusDstAlpha = gl.ONE_MINUS_DST_ALPHA
|
||||||
|
}
|
||||||
|
|
||||||
type context struct {
|
type context struct {
|
||||||
funcs chan func()
|
funcs chan func()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewContext() (*Context, error) {
|
func NewContext() (*Context, error) {
|
||||||
c := &Context{
|
c := &Context{
|
||||||
Nearest: gl.NEAREST,
|
|
||||||
Linear: gl.LINEAR,
|
|
||||||
VertexShader: gl.VERTEX_SHADER,
|
|
||||||
FragmentShader: gl.FRAGMENT_SHADER,
|
|
||||||
ArrayBuffer: gl.ARRAY_BUFFER,
|
|
||||||
ElementArrayBuffer: gl.ELEMENT_ARRAY_BUFFER,
|
|
||||||
DynamicDraw: gl.DYNAMIC_DRAW,
|
|
||||||
StaticDraw: gl.STATIC_DRAW,
|
|
||||||
Triangles: gl.TRIANGLES,
|
|
||||||
Lines: gl.LINES,
|
|
||||||
zero: gl.ZERO,
|
|
||||||
one: gl.ONE,
|
|
||||||
srcAlpha: gl.SRC_ALPHA,
|
|
||||||
dstAlpha: gl.DST_ALPHA,
|
|
||||||
oneMinusSrcAlpha: gl.ONE_MINUS_SRC_ALPHA,
|
|
||||||
oneMinusDstAlpha: gl.ONE_MINUS_DST_ALPHA,
|
|
||||||
locationCache: newLocationCache(),
|
locationCache: newLocationCache(),
|
||||||
lastCompositeMode: CompositeModeUnknown,
|
lastCompositeMode: CompositeModeUnknown,
|
||||||
}
|
}
|
||||||
@ -145,7 +149,7 @@ func (c *Context) BlendFunc(mode CompositeMode) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
c.lastCompositeMode = mode
|
c.lastCompositeMode = mode
|
||||||
s, d := c.operations(mode)
|
s, d := operations(mode)
|
||||||
gl.BlendFunc(uint32(s), uint32(d))
|
gl.BlendFunc(uint32(s), uint32(d))
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -58,6 +58,27 @@ func (p Program) id() programID {
|
|||||||
return programID(p.Get("__ebiten_programId").Int())
|
return programID(p.Get("__ebiten_programId").Int())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
c := js.Global.Get("WebGLRenderingContext")
|
||||||
|
Nearest = Filter(c.Get("NEAREST").Int())
|
||||||
|
Linear = Filter(c.Get("LINEAR").Int())
|
||||||
|
VertexShader = ShaderType(c.Get("VERTEX_SHADER").Int())
|
||||||
|
FragmentShader = ShaderType(c.Get("FRAGMENT_SHADER").Int())
|
||||||
|
ArrayBuffer = BufferType(c.Get("ARRAY_BUFFER").Int())
|
||||||
|
ElementArrayBuffer = BufferType(c.Get("ELEMENT_ARRAY_BUFFER").Int())
|
||||||
|
DynamicDraw = BufferUsage(c.Get("DYNAMIC_DRAW").Int())
|
||||||
|
StaticDraw = BufferUsage(c.Get("STATIC_DRAW").Int())
|
||||||
|
Triangles = Mode(c.Get("TRIANGLES").Int())
|
||||||
|
Lines = Mode(c.Get("LINES").Int())
|
||||||
|
|
||||||
|
zero = operation(c.Get("ZERO").Int())
|
||||||
|
one = operation(c.Get("ONE").Int())
|
||||||
|
srcAlpha = operation(c.Get("SRC_ALPHA").Int())
|
||||||
|
dstAlpha = operation(c.Get("DST_ALPHA").Int())
|
||||||
|
oneMinusSrcAlpha = operation(c.Get("ONE_MINUS_SRC_ALPHA").Int())
|
||||||
|
oneMinusDstAlpha = operation(c.Get("ONE_MINUS_DST_ALPHA").Int())
|
||||||
|
}
|
||||||
|
|
||||||
type context struct {
|
type context struct {
|
||||||
gl *webgl.Context
|
gl *webgl.Context
|
||||||
lastProgramID programID
|
lastProgramID programID
|
||||||
@ -89,22 +110,6 @@ func NewContext() (*Context, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c := &Context{
|
c := &Context{
|
||||||
Nearest: Filter(gl.NEAREST),
|
|
||||||
Linear: Filter(gl.LINEAR),
|
|
||||||
VertexShader: ShaderType(gl.VERTEX_SHADER),
|
|
||||||
FragmentShader: ShaderType(gl.FRAGMENT_SHADER),
|
|
||||||
ArrayBuffer: BufferType(gl.ARRAY_BUFFER),
|
|
||||||
ElementArrayBuffer: BufferType(gl.ELEMENT_ARRAY_BUFFER),
|
|
||||||
DynamicDraw: BufferUsage(gl.DYNAMIC_DRAW),
|
|
||||||
StaticDraw: BufferUsage(gl.STATIC_DRAW),
|
|
||||||
Triangles: Mode(gl.TRIANGLES),
|
|
||||||
Lines: Mode(gl.LINES),
|
|
||||||
zero: operation(gl.ZERO),
|
|
||||||
one: operation(gl.ONE),
|
|
||||||
srcAlpha: operation(gl.SRC_ALPHA),
|
|
||||||
dstAlpha: operation(gl.DST_ALPHA),
|
|
||||||
oneMinusSrcAlpha: operation(gl.ONE_MINUS_SRC_ALPHA),
|
|
||||||
oneMinusDstAlpha: operation(gl.ONE_MINUS_DST_ALPHA),
|
|
||||||
locationCache: newLocationCache(),
|
locationCache: newLocationCache(),
|
||||||
lastCompositeMode: CompositeModeUnknown,
|
lastCompositeMode: CompositeModeUnknown,
|
||||||
}
|
}
|
||||||
@ -141,7 +146,7 @@ func (c *Context) BlendFunc(mode CompositeMode) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.lastCompositeMode = mode
|
c.lastCompositeMode = mode
|
||||||
s, d := c.operations(mode)
|
s, d := operations(mode)
|
||||||
gl := c.gl
|
gl := c.gl
|
||||||
gl.BlendFunc(int(s), int(d))
|
gl.BlendFunc(int(s), int(d))
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,26 @@ func (p Program) id() programID {
|
|||||||
return programID(p.Value)
|
return programID(p.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Nearest = mgl.NEAREST
|
||||||
|
Linear = mgl.LINEAR
|
||||||
|
VertexShader = mgl.VERTEX_SHADER
|
||||||
|
FragmentShader = mgl.FRAGMENT_SHADER
|
||||||
|
ArrayBuffer = mgl.ARRAY_BUFFER
|
||||||
|
ElementArrayBuffer = mgl.ELEMENT_ARRAY_BUFFER
|
||||||
|
DynamicDraw = mgl.DYNAMIC_DRAW
|
||||||
|
StaticDraw = mgl.STATIC_DRAW
|
||||||
|
Triangles = mgl.TRIANGLES
|
||||||
|
Lines = mgl.LINES
|
||||||
|
|
||||||
|
zero = mgl.ZERO
|
||||||
|
one = mgl.ONE
|
||||||
|
srcAlpha = mgl.SRC_ALPHA
|
||||||
|
dstAlpha = mgl.DST_ALPHA
|
||||||
|
oneMinusSrcAlpha = mgl.ONE_MINUS_SRC_ALPHA
|
||||||
|
oneMinusDstAlpha = mgl.ONE_MINUS_DST_ALPHA
|
||||||
|
}
|
||||||
|
|
||||||
type context struct {
|
type context struct {
|
||||||
gl mgl.Context
|
gl mgl.Context
|
||||||
worker mgl.Worker
|
worker mgl.Worker
|
||||||
@ -48,22 +68,6 @@ type context struct {
|
|||||||
|
|
||||||
func NewContext() (*Context, error) {
|
func NewContext() (*Context, error) {
|
||||||
c := &Context{
|
c := &Context{
|
||||||
Nearest: mgl.NEAREST,
|
|
||||||
Linear: mgl.LINEAR,
|
|
||||||
VertexShader: mgl.VERTEX_SHADER,
|
|
||||||
FragmentShader: mgl.FRAGMENT_SHADER,
|
|
||||||
ArrayBuffer: mgl.ARRAY_BUFFER,
|
|
||||||
ElementArrayBuffer: mgl.ELEMENT_ARRAY_BUFFER,
|
|
||||||
DynamicDraw: mgl.DYNAMIC_DRAW,
|
|
||||||
StaticDraw: mgl.STATIC_DRAW,
|
|
||||||
Triangles: mgl.TRIANGLES,
|
|
||||||
Lines: mgl.LINES,
|
|
||||||
zero: mgl.ZERO,
|
|
||||||
one: mgl.ONE,
|
|
||||||
srcAlpha: mgl.SRC_ALPHA,
|
|
||||||
dstAlpha: mgl.DST_ALPHA,
|
|
||||||
oneMinusSrcAlpha: mgl.ONE_MINUS_SRC_ALPHA,
|
|
||||||
oneMinusDstAlpha: mgl.ONE_MINUS_DST_ALPHA,
|
|
||||||
locationCache: newLocationCache(),
|
locationCache: newLocationCache(),
|
||||||
lastCompositeMode: CompositeModeUnknown,
|
lastCompositeMode: CompositeModeUnknown,
|
||||||
}
|
}
|
||||||
@ -112,7 +116,7 @@ func (c *Context) BlendFunc(mode CompositeMode) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.lastCompositeMode = mode
|
c.lastCompositeMode = mode
|
||||||
s, d := c.operations(mode)
|
s, d := operations(mode)
|
||||||
gl.BlendFunc(mgl.Enum(s), mgl.Enum(d))
|
gl.BlendFunc(mgl.Enum(s), mgl.Enum(d))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,34 +40,34 @@ const (
|
|||||||
CompositeModeUnknown
|
CompositeModeUnknown
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *Context) operations(mode CompositeMode) (src operation, dst operation) {
|
func operations(mode CompositeMode) (src operation, dst operation) {
|
||||||
switch mode {
|
switch mode {
|
||||||
case CompositeModeSourceOver:
|
case CompositeModeSourceOver:
|
||||||
return c.one, c.oneMinusSrcAlpha
|
return one, oneMinusSrcAlpha
|
||||||
case CompositeModeClear:
|
case CompositeModeClear:
|
||||||
return c.zero, c.zero
|
return zero, zero
|
||||||
case CompositeModeCopy:
|
case CompositeModeCopy:
|
||||||
return c.one, c.zero
|
return one, zero
|
||||||
case CompositeModeDestination:
|
case CompositeModeDestination:
|
||||||
return c.zero, c.one
|
return zero, one
|
||||||
case CompositeModeDestinationOver:
|
case CompositeModeDestinationOver:
|
||||||
return c.oneMinusDstAlpha, c.one
|
return oneMinusDstAlpha, one
|
||||||
case CompositeModeSourceIn:
|
case CompositeModeSourceIn:
|
||||||
return c.dstAlpha, c.zero
|
return dstAlpha, zero
|
||||||
case CompositeModeDestinationIn:
|
case CompositeModeDestinationIn:
|
||||||
return c.zero, c.srcAlpha
|
return zero, srcAlpha
|
||||||
case CompositeModeSourceOut:
|
case CompositeModeSourceOut:
|
||||||
return c.oneMinusDstAlpha, c.zero
|
return oneMinusDstAlpha, zero
|
||||||
case CompositeModeDestinationOut:
|
case CompositeModeDestinationOut:
|
||||||
return c.zero, c.oneMinusSrcAlpha
|
return zero, oneMinusSrcAlpha
|
||||||
case CompositeModeSourceAtop:
|
case CompositeModeSourceAtop:
|
||||||
return c.dstAlpha, c.oneMinusSrcAlpha
|
return dstAlpha, oneMinusSrcAlpha
|
||||||
case CompositeModeDestinationAtop:
|
case CompositeModeDestinationAtop:
|
||||||
return c.oneMinusDstAlpha, c.srcAlpha
|
return oneMinusDstAlpha, srcAlpha
|
||||||
case CompositeModeXor:
|
case CompositeModeXor:
|
||||||
return c.oneMinusDstAlpha, c.oneMinusSrcAlpha
|
return oneMinusDstAlpha, oneMinusSrcAlpha
|
||||||
case CompositeModeLighter:
|
case CompositeModeLighter:
|
||||||
return c.one, c.one
|
return one, one
|
||||||
default:
|
default:
|
||||||
panic("not reach")
|
panic("not reach")
|
||||||
}
|
}
|
||||||
|
@ -61,13 +61,13 @@ func (s *openGLState) initialize(c *opengl.Context) error {
|
|||||||
s.lastColorMatrixTranslation = nil
|
s.lastColorMatrixTranslation = nil
|
||||||
s.lastTexture = zeroTexture
|
s.lastTexture = zeroTexture
|
||||||
|
|
||||||
shaderVertexModelviewNative, err := c.NewShader(c.VertexShader, shader(c, shaderVertexModelview))
|
shaderVertexModelviewNative, err := c.NewShader(opengl.VertexShader, shader(c, shaderVertexModelview))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err))
|
panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err))
|
||||||
}
|
}
|
||||||
defer c.DeleteShader(shaderVertexModelviewNative)
|
defer c.DeleteShader(shaderVertexModelviewNative)
|
||||||
|
|
||||||
shaderFragmentTextureNative, err := c.NewShader(c.FragmentShader, shader(c, shaderFragmentTexture))
|
shaderFragmentTextureNative, err := c.NewShader(opengl.FragmentShader, shader(c, shaderFragmentTexture))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err))
|
panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err))
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ func (s *openGLState) initialize(c *opengl.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const stride = 8 // (2 [vertices] + 2 [texels]) * 2 [sizeof(int16)/bytes]
|
const stride = 8 // (2 [vertices] + 2 [texels]) * 2 [sizeof(int16)/bytes]
|
||||||
c.NewBuffer(c.ArrayBuffer, 4*stride*MaxQuads, c.DynamicDraw)
|
c.NewBuffer(opengl.ArrayBuffer, 4*stride*MaxQuads, opengl.DynamicDraw)
|
||||||
|
|
||||||
indices := make([]uint16, 6*MaxQuads)
|
indices := make([]uint16, 6*MaxQuads)
|
||||||
for i := uint16(0); i < MaxQuads; i++ {
|
for i := uint16(0); i < MaxQuads; i++ {
|
||||||
@ -93,7 +93,7 @@ func (s *openGLState) initialize(c *opengl.Context) error {
|
|||||||
indices[6*i+4] = 4*i + 2
|
indices[6*i+4] = 4*i + 2
|
||||||
indices[6*i+5] = 4*i + 3
|
indices[6*i+5] = 4*i + 3
|
||||||
}
|
}
|
||||||
s.indexBufferQuads = c.NewBuffer(c.ElementArrayBuffer, indices, c.StaticDraw)
|
s.indexBufferQuads = c.NewBuffer(opengl.ElementArrayBuffer, indices, opengl.StaticDraw)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user