本文整理匯總了Golang中github.com/hajimehoshi/ebiten/internal/graphics/opengl.Context.VertexAttribPointer方法的典型用法代碼示例。如果您正苦於以下問題:Golang Context.VertexAttribPointer方法的具體用法?Golang Context.VertexAttribPointer怎麽用?Golang Context.VertexAttribPointer使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/hajimehoshi/ebiten/internal/graphics/opengl.Context
的用法示例。
在下文中一共展示了Context.VertexAttribPointer方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: useProgramForRects
func useProgramForRects(c *opengl.Context, projectionMatrix []float32) programFinisher {
if !lastProgram.Equals(programSolidRect) {
c.UseProgram(programSolidRect)
lastProgram = programSolidRect
}
program := programSolidRect
c.BindElementArrayBuffer(indexBufferQuads)
c.UniformFloats(program, "projection_matrix", projectionMatrix)
c.EnableVertexAttribArray(program, "vertex")
c.EnableVertexAttribArray(program, "color")
c.VertexAttribPointer(program, "vertex", true, false, int16Size*6, 2, int16Size*0)
c.VertexAttribPointer(program, "color", false, true, int16Size*6, 4, int16Size*2)
return func() {
c.DisableVertexAttribArray(program, "color")
c.DisableVertexAttribArray(program, "vertex")
}
}
示例2: useProgramForTexture
func useProgramForTexture(c *opengl.Context, projectionMatrix []float32, texture opengl.Texture, geo Matrix, color Matrix) programFinisher {
if !lastProgram.Equals(programTexture) {
c.UseProgram(programTexture)
lastProgram = programTexture
lastProjectionMatrix = nil
lastModelviewMatrix = nil
lastColorMatrix = nil
}
program := programTexture
c.BindElementArrayBuffer(indexBufferQuads)
if !areSameFloat32Array(lastProjectionMatrix, projectionMatrix) {
c.UniformFloats(program, "projection_matrix", projectionMatrix)
if lastProjectionMatrix == nil {
lastProjectionMatrix = make([]float32, 16)
}
copy(lastProjectionMatrix, projectionMatrix)
}
ma := float32(geo.Element(0, 0))
mb := float32(geo.Element(0, 1))
mc := float32(geo.Element(1, 0))
md := float32(geo.Element(1, 1))
tx := float32(geo.Element(0, 2))
ty := float32(geo.Element(1, 2))
modelviewMatrix := []float32{
ma, mc, 0, 0,
mb, md, 0, 0,
0, 0, 1, 0,
tx, ty, 0, 1,
}
if !areSameFloat32Array(lastModelviewMatrix, modelviewMatrix) {
c.UniformFloats(program, "modelview_matrix", modelviewMatrix)
if lastModelviewMatrix == nil {
lastModelviewMatrix = make([]float32, 16)
}
copy(lastModelviewMatrix, modelviewMatrix)
}
c.UniformInt(program, "texture", 0)
e := [4][5]float32{}
for i := 0; i < 4; i++ {
for j := 0; j < 5; j++ {
e[i][j] = float32(color.Element(i, j))
}
}
colorMatrix := []float32{
e[0][0], e[1][0], e[2][0], e[3][0],
e[0][1], e[1][1], e[2][1], e[3][1],
e[0][2], e[1][2], e[2][2], e[3][2],
e[0][3], e[1][3], e[2][3], e[3][3],
}
if !areSameFloat32Array(lastColorMatrix, colorMatrix) {
c.UniformFloats(program, "color_matrix", colorMatrix)
if lastColorMatrix == nil {
lastColorMatrix = make([]float32, 16)
}
copy(lastColorMatrix, colorMatrix)
}
colorMatrixTranslation := []float32{
e[0][4], e[1][4], e[2][4], e[3][4],
}
c.UniformFloats(program, "color_matrix_translation", colorMatrixTranslation)
// We don't have to call gl.ActiveTexture here: GL_TEXTURE0 is the default active texture
// See also: https://www.opengl.org/sdk/docs/man2/xhtml/glActiveTexture.xml
c.BindTexture(texture)
c.EnableVertexAttribArray(program, "vertex")
c.EnableVertexAttribArray(program, "tex_coord")
c.VertexAttribPointer(program, "vertex", true, false, int16Size*4, 2, int16Size*0)
c.VertexAttribPointer(program, "tex_coord", true, true, int16Size*4, 2, int16Size*2)
return func() {
c.DisableVertexAttribArray(program, "tex_coord")
c.DisableVertexAttribArray(program, "vertex")
}
}