本文整理汇总了Golang中golang.org/x/mobile/gl.BindBuffer函数的典型用法代码示例。如果您正苦于以下问题:Golang BindBuffer函数的具体用法?Golang BindBuffer怎么用?Golang BindBuffer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BindBuffer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: start
func start() {
var err error
glimage.program, err = CreateProgram(vertexShader, fragmentShader)
if err != nil {
panic(err)
}
glimage.quadXY = gl.CreateBuffer()
glimage.quadUV = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadXY)
gl.BufferData(gl.ARRAY_BUFFER, quadXYCoords, gl.STATIC_DRAW)
gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadUV)
gl.BufferData(gl.ARRAY_BUFFER, quadUVCoords, gl.STATIC_DRAW)
glimage.pos = gl.GetAttribLocation(glimage.program, "pos")
glimage.mvp = gl.GetUniformLocation(glimage.program, "mvp")
glimage.uvp = gl.GetUniformLocation(glimage.program, "uvp")
glimage.inUV = gl.GetAttribLocation(glimage.program, "inUV")
glimage.textureSample = gl.GetUniformLocation(glimage.program, "textureSample")
texmap.Lock()
defer texmap.Unlock()
for key, tex := range texmap.texs {
texmap.init(key)
tex.needsUpload = true
}
}
开发者ID:rockxcn,项目名称:mobile,代码行数:28,代码来源:glimage.go
示例2: Draw
func (shape *StaticShape) Draw(shader Shader, camera Camera) {
gl.BindBuffer(gl.ARRAY_BUFFER, shape.VBO)
stride := shape.Stride()
gl.EnableVertexAttribArray(shader.Attrib("vertCoord"))
gl.VertexAttribPointer(shader.Attrib("vertCoord"), vertexDim, gl.FLOAT, false, stride, 0)
if len(shape.normals) > 0 {
gl.EnableVertexAttribArray(shader.Attrib("vertNormal"))
gl.VertexAttribPointer(shader.Attrib("vertNormal"), normalDim, gl.FLOAT, false, stride, vertexDim*vecSize)
}
// TODO: texture
if len(shape.indices) > 0 {
gl.BindBuffer(gl.ELEMENT_ARRAY_BUFFER, shape.IBO)
gl.DrawElements(gl.TRIANGLES, len(shape.indices), gl.UNSIGNED_BYTE, 0)
} else {
gl.DrawArrays(gl.TRIANGLES, 0, shape.Len())
}
gl.DisableVertexAttribArray(shader.Attrib("vertCoord"))
if len(shape.normals) > 0 {
gl.DisableVertexAttribArray(shader.Attrib("vertNormal"))
}
// TODO: texture
}
开发者ID:shazow,项目名称:linerage3d,代码行数:26,代码来源:shape.go
示例3: Start
func (e *Engine) Start() {
var err error
e.shader.program, err = LoadProgram("shader.v.glsl", "shader.f.glsl")
if err != nil {
panic(fmt.Sprintln("LoadProgram failed:", err))
}
e.shape.buf = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, e.shape.buf)
gl.BufferData(gl.ARRAY_BUFFER, cubeData, gl.STATIC_DRAW)
fmt.Println(len(cubeData))
e.shader.vertCoord = gl.GetAttribLocation(e.shader.program, "vertCoord")
e.shader.projection = gl.GetUniformLocation(e.shader.program, "projection")
e.shader.view = gl.GetUniformLocation(e.shader.program, "view")
e.shader.modelx = gl.GetUniformLocation(e.shader.program, "modelx")
e.shader.modely = gl.GetUniformLocation(e.shader.program, "modely")
e.shader.color = gl.GetAttribLocation(e.shader.program, "color")
e.shape.colorbuf = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, e.shape.colorbuf)
gl.BufferData(gl.ARRAY_BUFFER, colorData, gl.STATIC_DRAW)
gl.VertexAttribPointer(e.shader.color, colorsPerVertex, gl.FLOAT, false, 4, 0) //更新color值
gl.DrawArrays(gl.TRIANGLES, 0, vertexCount)
e.started = time.Now()
}
开发者ID:lovexiaov,项目名称:gomobileapp,代码行数:27,代码来源:main.go
示例4: Draw
func (w *windowImpl) Draw(src2dst f64.Aff3, src screen.Texture, sr image.Rectangle, op draw.Op, opts *screen.DrawOptions) {
t := src.(*textureImpl)
a := w.vertexAff3(sr)
gl.UseProgram(w.s.texture.program)
writeAff3(w.s.texture.mvp, mul(a, src2dst))
// OpenGL's fragment shaders' UV coordinates run from (0,0)-(1,1),
// unlike vertex shaders' XY coordinates running from (-1,+1)-(+1,-1).
//
// We are drawing a rectangle PQRS, defined by two of its
// corners, onto the entire texture. The two quads may actually
// be equal, but in the general case, PQRS can be smaller.
//
// (0,0) +---------------+ (1,0)
// | P +-----+ Q |
// | | | |
// | S +-----+ R |
// (0,1) +---------------+ (1,1)
//
// The PQRS quad is always axis-aligned. First of all, convert
// from pixel space to texture space.
tw := float64(t.size.X)
th := float64(t.size.Y)
px := float64(sr.Min.X-0) / tw
py := float64(sr.Min.Y-0) / th
qx := float64(sr.Max.X-0) / tw
sy := float64(sr.Max.Y-0) / th
// Due to axis alignment, qy = py and sx = px.
//
// The simultaneous equations are:
// 0 + 0 + a02 = px
// 0 + 0 + a12 = py
// a00 + 0 + a02 = qx
// a10 + 0 + a12 = qy = py
// 0 + a01 + a02 = sx = px
// 0 + a11 + a12 = sy
writeAff3(w.s.texture.uvp, f64.Aff3{
qx - px, 0, px,
0, sy - py, py,
})
gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, t.id)
gl.Uniform1i(w.s.texture.sample, 0)
gl.BindBuffer(gl.ARRAY_BUFFER, w.s.texture.quadXY)
gl.EnableVertexAttribArray(w.s.texture.pos)
gl.VertexAttribPointer(w.s.texture.pos, 2, gl.FLOAT, false, 0, 0)
gl.BindBuffer(gl.ARRAY_BUFFER, w.s.texture.quadUV)
gl.EnableVertexAttribArray(w.s.texture.inUV)
gl.VertexAttribPointer(w.s.texture.inUV, 2, gl.FLOAT, false, 0, 0)
gl.DrawArrays(gl.TRIANGLE_STRIP, 0, 4)
gl.DisableVertexAttribArray(w.s.texture.pos)
gl.DisableVertexAttribArray(w.s.texture.inUV)
}
开发者ID:kleopatra999,项目名称:exp,代码行数:59,代码来源:window.go
示例5: Draw
func (e *Engine) Draw(c size.Event) {
gl.Enable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
gl.ClearColor(0.2, 0.2, 0.2, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.Clear(gl.DEPTH_BUFFER_BIT)
gl.UseProgram(e.shader.program)
m := mgl32.Perspective(0.785, float32(c.WidthPt/c.HeightPt), 0.1, 10.0)
gl.UniformMatrix4fv(e.shader.projection, m[:])
eye := mgl32.Vec3{0, 0, 8}
center := mgl32.Vec3{0, 0, 0}
up := mgl32.Vec3{0, 1, 0}
m = mgl32.LookAtV(eye, center, up)
gl.UniformMatrix4fv(e.shader.view, m[:])
m = mgl32.HomogRotate3D(float32(e.touchLoc.X/c.WidthPt-0.5)*3.14*2, mgl32.Vec3{0, 1, 0})
gl.UniformMatrix4fv(e.shader.modelx, m[:])
m = mgl32.HomogRotate3D(float32(e.touchLoc.Y/c.HeightPt-0.5)*3.14, mgl32.Vec3{1, 0, 0})
gl.UniformMatrix4fv(e.shader.modely, m[:])
coordsPerVertex := 3
for _, obj := range e.shape.Objs {
gl.BindBuffer(gl.ARRAY_BUFFER, obj.coord)
gl.EnableVertexAttribArray(e.shader.vertCoord)
gl.VertexAttribPointer(e.shader.vertCoord, coordsPerVertex, gl.FLOAT, false, 12, 0)
if obj.useuv == true {
gl.Uniform1i(e.shader.useuv, 1)
texCoordsPerVertex := 2
gl.BindBuffer(gl.ARRAY_BUFFER, obj.uvcoord)
gl.EnableVertexAttribArray(e.shader.vertTexCoord)
gl.VertexAttribPointer(e.shader.vertTexCoord, texCoordsPerVertex, gl.FLOAT, false, 8, 0)
gl.BindTexture(gl.TEXTURE_2D, obj.tex)
} else {
gl.Uniform1i(e.shader.useuv, 0)
gl.Uniform4f(e.shader.color, obj.color[0], obj.color[1], obj.color[2], obj.color[3])
}
gl.DrawArrays(gl.TRIANGLES, 0, obj.vcount)
if obj.useuv {
gl.DisableVertexAttribArray(e.shader.vertTexCoord)
}
gl.DisableVertexAttribArray(e.shader.vertCoord)
}
debug.DrawFPS(c)
}
开发者ID:lomoalbert,项目名称:gomobileapp,代码行数:55,代码来源:main.go
示例6: Draw
func (e *Engine) Draw(c size.Event) {
gl.Enable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
gl.ClearColor(0.5, 0.8, 0.8, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.Clear(gl.DEPTH_BUFFER_BIT)
gl.UseProgram(e.shader.program)
gl.Uniform3fv(e.shader.lightdir, []float32{0.5, 0.6, 0.7})
m := mgl32.Perspective(1.3, float32(c.WidthPt/c.HeightPt), 0.1, 10.0)
gl.UniformMatrix4fv(e.shader.projectionmatrix, m[:])
eye := mgl32.Vec3{0, 0, 0.2}
center := mgl32.Vec3{0, 0, 0}
up := mgl32.Vec3{0, 1, 0}
m = mgl32.LookAtV(eye, center, up)
gl.UniformMatrix4fv(e.shader.viewmatrix, m[:])
m = mgl32.HomogRotate3D((e.touchx/float32(c.WidthPt)-0.5)*6.28, mgl32.Vec3{0, 1, 0})
gl.UniformMatrix4fv(e.shader.modelmatrix, m[:])
m = mgl32.HomogRotate3D((e.touchx/float32(c.WidthPt)-0.5)*6.28, mgl32.Vec3{0, -1, 0})
gl.UniformMatrix4fv(e.shader.lightmatrix, m[:])
coordsPerVertex := 3
for _, obj := range e.shape.Objs {
gl.BindBuffer(gl.ARRAY_BUFFER, obj.coord)
gl.EnableVertexAttribArray(e.shader.vertCoord)
gl.VertexAttribPointer(e.shader.vertCoord, coordsPerVertex, gl.FLOAT, false, 12, 0)
texCoordsPerVertex := 2
gl.BindBuffer(gl.ARRAY_BUFFER, obj.uvcoord)
gl.EnableVertexAttribArray(e.shader.texcoord)
gl.VertexAttribPointer(e.shader.texcoord, texCoordsPerVertex, gl.FLOAT, false, 8, 0)
gl.BindBuffer(gl.ARRAY_BUFFER, obj.normal)
gl.EnableVertexAttribArray(e.shader.normal)
gl.VertexAttribPointer(e.shader.normal, 3, gl.FLOAT, false, 12, 0)
gl.BindTexture(gl.TEXTURE_2D, obj.tex)
gl.DrawArrays(gl.TRIANGLES, 0, obj.vcount)
gl.DisableVertexAttribArray(e.shader.texcoord)
gl.DisableVertexAttribArray(e.shader.normal)
gl.DisableVertexAttribArray(e.shader.vertCoord)
}
debug.DrawFPS(c)
}
开发者ID:lovexiaov,项目名称:gomobileapp,代码行数:55,代码来源:main.go
示例7: onPaint
func onPaint(sz size.Event) {
gl.ClearColor(rgb(156), rgb(39), rgb(176), 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
var rotationMatrix = []float32{
f32.Cos(-alpha), -f32.Sin(-alpha), 0.0,
f32.Sin(-alpha), f32.Cos(-alpha), 0.0,
0.0, 0.0, 1.0,
}
gl.UseProgram(program)
// setting color
gl.Uniform4f(color, rgb(255), rgb(255), rgb(255), 1)
gl.UniformMatrix3fv(matrixId, rotationMatrix)
gl.Uniform1f(resolutionId, resIndex)
gl.BindBuffer(gl.ARRAY_BUFFER, swasBuffer)
gl.EnableVertexAttribArray(position)
gl.VertexAttribPointer(position, 3, gl.FLOAT, false, 0, 0)
gl.DrawArrays(gl.LINES, 0, 16)
gl.DisableVertexAttribArray(position)
gl.UseProgram(texProgram)
// setting color
gl.Uniform4f(color2, rgb(130), rgb(50), rgb(80), 1)
gl.Uniform1f(resolutionId2, resIndex)
gl.UniformMatrix3fv(matrixId2, rotationMatrix)
gl.BindBuffer(gl.ARRAY_BUFFER, quadBuffer)
gl.EnableVertexAttribArray(position2)
gl.VertexAttribPointer(position2, 3, gl.FLOAT, false, 0, 0)
gl.BindBuffer(gl.ARRAY_BUFFER, quadTexBuffer)
gl.EnableVertexAttribArray(textureCoords)
gl.VertexAttribPointer(textureCoords, 2, gl.FLOAT, false, 0, 0)
gl.Uniform1i(gl.GetUniformLocation(texProgram, "myTexture"), 0)
gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, textureId)
gl.DrawArrays(gl.TRIANGLES, 0, 6)
gl.DisableVertexAttribArray(position2)
gl.DisableVertexAttribArray(textureCoords)
if spin == true {
alpha += 0.1
}
if alpha >= 360 {
alpha = 0.0
}
}
开发者ID:gitter-badger,项目名称:bukkake,代码行数:54,代码来源:main.go
示例8: initGL
func (video *Video) initGL() {
log.Print("Initing")
video.fpsmanager = gfx.NewFramerate()
video.fpsmanager.SetFramerate(60)
gl.ClearColor(0.0, 0.0, 0.0, 1.0)
gl.Enable(gl.CULL_FACE)
gl.Enable(gl.DEPTH_TEST)
log.Print("Creating program")
video.prog = createProgram(vertShaderSrcDef, fragShaderSrcDef)
log.Print("Attrib loc 1")
posAttrib := attribLocation(video.prog, "vPosition")
log.Print("Attrib loc 2")
texCoordAttr := attribLocation(video.prog, "vTexCoord")
log.Print("Uniform loc 1")
paletteLoc := uniformLocation(video.prog, "palette")
log.Print("Uniform loc 2")
video.textureUni = uniformLocation(video.prog, "texture")
log.Print("Gen Texture")
video.texture = genTexture()
gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, video.texture)
log.Print("TexParam")
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
gl.UseProgram(video.prog)
gl.EnableVertexAttribArray(posAttrib)
gl.EnableVertexAttribArray(texCoordAttr)
gl.Uniform3iv(paletteLoc, nes.SPaletteRgb)
log.Print("VertBO")
vertVBO := genBuffer()
checkGLError()
gl.BindBuffer(gl.ARRAY_BUFFER, vertVBO)
verts := f32.Bytes(binary.LittleEndian, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0)
gl.BufferData(gl.ARRAY_BUFFER, verts, gl.STATIC_DRAW)
textCoorBuf := genBuffer()
checkGLError()
gl.BindBuffer(gl.ARRAY_BUFFER, textCoorBuf)
texVerts := f32.Bytes(binary.LittleEndian, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0)
gl.BufferData(gl.ARRAY_BUFFER, texVerts, gl.STATIC_DRAW)
gl.VertexAttribPointer(posAttrib, 2, gl.FLOAT, false, 0, 0)
gl.VertexAttribPointer(texCoordAttr, 2, gl.FLOAT, false, 0, 0)
log.Print("Started")
}
开发者ID:BluePadge,项目名称:Fergulator-Android,代码行数:52,代码来源:video.go
示例9: Buffer
func (shape *StaticShape) Buffer() {
data := shape.Bytes()
if len(data) > 0 {
gl.BindBuffer(gl.ARRAY_BUFFER, shape.VBO)
gl.BufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW)
}
if len(shape.indices) > 0 {
data = EncodeObjects(0, len(shape.indices), NewDimSlice(1, shape.indices))
gl.BindBuffer(gl.ELEMENT_ARRAY_BUFFER, shape.IBO)
gl.BufferData(gl.ELEMENT_ARRAY_BUFFER, data, gl.STATIC_DRAW)
}
}
开发者ID:shazow,项目名称:linerage3d,代码行数:13,代码来源:shape.go
示例10: Start
func (e *Engine) Start() {
var err error
e.shader.program, err = LoadProgram("shader.v.glsl", "shader.f.glsl")
if err != nil {
panic(fmt.Sprintln("LoadProgram failed:", err))
}
e.shader.models, err = wavefront.Read("girl.obj")
check(err)
e.shader.vertCoord = gl.GetAttribLocation(e.shader.program, "vertCoord")
e.shader.vertTexCoord = gl.GetAttribLocation(e.shader.program, "vertTexCoord")
e.shader.projection = gl.GetUniformLocation(e.shader.program, "projection")
e.shader.view = gl.GetUniformLocation(e.shader.program, "view")
e.shader.modelx = gl.GetUniformLocation(e.shader.program, "modelx")
e.shader.modely = gl.GetUniformLocation(e.shader.program, "modely")
e.shader.color = gl.GetUniformLocation(e.shader.program, "color")
e.shader.useuv = gl.GetUniformLocation(e.shader.program, "useuv")
for _, model := range e.shader.models {
for _, group := range model.Groups {
//颜色
color := group.Material.Ambient
//顶点
data := f32.Bytes(binary.LittleEndian, group.Vertexes...)
vertexCount := len(group.Vertexes) / 3
databuf := gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, databuf)
gl.BufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW)
//UV坐标
textcoords := f32.Bytes(binary.LittleEndian, group.Textcoords...)
uvbuf := gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, uvbuf)
gl.BufferData(gl.ARRAY_BUFFER, textcoords, gl.STATIC_DRAW)
//贴图文件
var useuv bool
tex, err := LoadTexture(group.Material.Texturefile)
if err != nil {
useuv = false
} else {
useuv = true
}
e.shape.Objs = append(e.shape.Objs, Obj{vcount: vertexCount, coord: databuf, color: color, useuv: useuv, uvcoord: uvbuf, tex: tex})
}
}
}
开发者ID:lomoalbert,项目名称:gomobileapp,代码行数:49,代码来源:main.go
示例11: draw
func draw() {
if program.Value == 0 {
initGL()
initCL()
}
if numPlatforms == 0 {
gl.ClearColor(1, 0, 0, 1)
} else {
gl.ClearColor(0, 1, 0, 1)
}
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.UseProgram(program)
blue += 0.01
if blue > 1 {
blue = 0
}
gl.Uniform4f(color, 0, 0, blue, 1)
gl.Uniform2f(offset, float32(touchLoc.X/geom.Width), float32(touchLoc.Y/geom.Height))
gl.BindBuffer(gl.ARRAY_BUFFER, buf)
gl.EnableVertexAttribArray(position)
gl.VertexAttribPointer(position, coordsPerVertex, gl.FLOAT, false, 0, 0)
gl.DrawArrays(gl.TRIANGLES, 0, vertexCount)
gl.DisableVertexAttribArray(position)
debug.DrawFPS()
}
开发者ID:xfong,项目名称:gocl,代码行数:30,代码来源:main.go
示例12: onPaint
func onPaint(c size.Event) {
gl.ClearColor(0, 0.3, 0.3, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.UseProgram(program)
green += direction
if green > 1 {
green = 1
direction = -direction
}
if green < 0.4 {
green = 0.4
direction = -direction
}
gl.Uniform4f(color, 0, green, 0, 1)
gl.Uniform2f(offset, touchX/float32(c.WidthPx), touchY/float32(c.HeightPx))
gl.BindBuffer(gl.ARRAY_BUFFER, buf)
gl.BufferData(gl.ARRAY_BUFFER, triangleData, gl.STATIC_DRAW) // ?
gl.EnableVertexAttribArray(position)
gl.VertexAttribPointer(position, coordsPerVertex, gl.FLOAT, false, 0, 0)
gl.DrawArrays(gl.TRIANGLES, 0, vertexCount)
gl.DisableVertexAttribArray(position)
debug.DrawFPS(c)
}
开发者ID:plumbum,项目名称:go-samples,代码行数:30,代码来源:main.go
示例13: onPaint
func onPaint(c size.Event) {
//清场
gl.ClearColor(1, 1, 1, 1) //设置背景颜色
gl.Clear(gl.COLOR_BUFFER_BIT)
//使用program
gl.UseProgram(program)
gl.Uniform4f(color, 0, 0.5, 0.8, 1) //设置color对象值,设置4个浮点数.
//offset有两个值X,Y,窗口左上角为(0,0),右下角为(1,1)
//gl.Uniform4f(offset,5.0,1.0,1.0,1.0 )
//gl.Uniform2f(offset,offsetx,offsety )//为2参数的uniform变量赋值
//log.Println("offset:",offsetx,offsety, 0, 0)
gl.UniformMatrix4fv(scan, []float32{
float32(touchLoc.X/c.WidthPt*4 - 2), 0, 0, 0,
0, float32(touchLoc.Y/c.HeightPt*4 - 2), 0, 0,
0, 0, 0, 0,
0, 0, 0, 1,
})
gl.BindBuffer(gl.ARRAY_BUFFER, buf)
gl.EnableVertexAttribArray(position)
/*glVertexAttribPointer 指定了渲染时索引值为 index 的顶点属性数组的数据格式和位置。调用gl.vertexAttribPointer()方法,把顶点着色器中某个属性相对应的通用属性索引连接到绑定的webGLBUffer对象上。
index 指定要修改的顶点属性的索引值
size 指定每个顶点属性的组件数量。必须为1、2、3或者4。初始值为4。(如position是由3个(x,y,z)组成,而颜色是4个(r,g,b,a))
type 指定数组中每个组件的数据类型。可用的符号常量有GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,GL_UNSIGNED_SHORT, GL_FIXED, 和 GL_FLOAT,初始值为GL_FLOAT。
normalized 指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE)。
stride 指定连续顶点属性之间的偏移量。如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的。初始值为0。
pointer 指定第一个组件在数组的第一个顶点属性中的偏移量。该数组与GL_ARRAY_BUFFER绑定,储存于缓冲区中。初始值为0;
*/
gl.VertexAttribPointer(position, coordsPerVertex, gl.FLOAT, false, 0, 0) //更新position值
gl.DrawArrays(gl.TRIANGLES, 0, vertexCount)
gl.DisableVertexAttribArray(position)
debug.DrawFPS(c)
}
开发者ID:lovexiaov,项目名称:gomobileapp,代码行数:35,代码来源:main.go
示例14: onStart
func onStart() {
var err error
program, err = glutil.CreateProgram(vertexShader, fragmentShader)
if err != nil {
log.Printf("error creating GL program: %v", err)
return
}
//创建一个WebGLBuffer对象,把它绑定到顶点缓冲上,并把顶点数据载入到顶点冲。
buf = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, buf)
gl.BufferData(gl.ARRAY_BUFFER, lineData, gl.STATIC_DRAW)
/*opengl中三种变量
uniform变量是外部application程序传递给(vertex和fragment)shader的变量。因此它是application通过函数glUniform**()函数赋值的。
在(vertex和fragment)shader程序内部,uniform变量就像是C语言里面的常量(const ),它不能被shader程序修改。(shader只能用,不能改)
attribute变量是只能在vertex shader中使用的变量。(它不能在fragment shader中声明attribute变量,也不能被fragment shader中使用)
一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等。
在application中,一般用函数glBindAttribLocation()来绑定每个attribute变量的位置,然后用函数glVertexAttribPointer()为每个attribute变量赋值。
varying变量是vertex和fragment shader之间做数据传递用的。一般vertex shader修改varying变量的值,然后fragment shader使用该varying变量的值。
因此varying变量在vertex和fragment shader二者之间的声明必须是一致的。application不能使用此变量。
*/
position = gl.GetAttribLocation(program, "position") //获取位置对象(索引)
color = gl.GetUniformLocation(program, "color") // 获取颜色对象(索引)
scan = gl.GetUniformLocation(program, "scan") // 获取偏移对象(索引)
// fmt.Println(position.String(),color.String(),offset.String())//Attrib(0) Uniform(1) Uniform(0)
// TODO(crawshaw): the debug package needs to put GL state init here
// Can this be an event.Register call now??
}
开发者ID:lovexiaov,项目名称:gomobileapp,代码行数:31,代码来源:main.go
示例15: Buffer
func (emitter *particleEmitter) Buffer() {
data := emitter.Bytes()
if len(data) > 0 {
gl.BindBuffer(gl.ARRAY_BUFFER, emitter.VBO)
gl.BufferSubData(gl.ARRAY_BUFFER, 0, data)
}
}
开发者ID:shazow,项目名称:linerage3d,代码行数:7,代码来源:particle.go
示例16: Buffer
func (shape *Line) Buffer(offset int) {
data := shape.BytesOffset(offset)
if len(data) == 0 {
return
}
gl.BindBuffer(gl.ARRAY_BUFFER, shape.VBO)
gl.BufferSubData(gl.ARRAY_BUFFER, lineEmittedVertices*offset*shape.Stride(), data)
}
开发者ID:shazow,项目名称:linerage3d,代码行数:8,代码来源:line.go
示例17: NewDynamicShape
func NewDynamicShape(bufSize int) *DynamicShape {
shape := &DynamicShape{}
shape.VBO = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, shape.VBO)
gl.BufferInit(gl.ARRAY_BUFFER, bufSize, gl.DYNAMIC_DRAW)
return shape
}
开发者ID:shazow,项目名称:linerage3d,代码行数:8,代码来源:shape.go
示例18: onStart
func onStart() {
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)
texture := loadImages("495.png")
textureId = gl.CreateTexture()
gl.BindTexture(gl.TEXTURE_2D, textureId)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT)
gl.TexImage2D(gl.TEXTURE_2D, 0, texture.Rect.Size().X, texture.Rect.Size().Y, gl.RGBA, gl.UNSIGNED_BYTE, texture.Pix)
// loading Shaders & linking programs
program = createProgram("vShader.vs", "fShader.vs")
texProgram = createProgram("vTexShader.vs", "fTexShader.vs")
quadBuffer = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, quadBuffer)
gl.BufferData(gl.ARRAY_BUFFER, quadData, gl.STATIC_DRAW)
quadTexBuffer = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, quadTexBuffer)
gl.BufferData(gl.ARRAY_BUFFER, quadTexData, gl.STATIC_DRAW)
swasBuffer = gl.CreateBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, swasBuffer)
gl.BufferData(gl.ARRAY_BUFFER, swastikaData, gl.STATIC_DRAW)
position = gl.GetAttribLocation(program, "position")
color = gl.GetUniformLocation(program, "color")
matrixId = gl.GetUniformLocation(program, "rotationMatrix")
resolutionId = gl.GetUniformLocation(program, "resIndex")
position2 = gl.GetAttribLocation(texProgram, "position")
textureCoords = gl.GetAttribLocation(texProgram, "texCoords")
matrixId2 = gl.GetUniformLocation(texProgram, "rotationMatrix")
resolutionId2 = gl.GetUniformLocation(texProgram, "resIndex")
color2 = gl.GetUniformLocation(texProgram, "color")
}
开发者ID:gitter-badger,项目名称:bukkake,代码行数:43,代码来源:main.go
示例19: Draw
func (emitter *particleEmitter) Draw(shader Shader, camera Camera) {
gl.BindBuffer(gl.ARRAY_BUFFER, emitter.VBO)
gl.EnableVertexAttribArray(shader.Attrib("vertCoord"))
gl.VertexAttribPointer(shader.Attrib("vertCoord"), vertexDim, gl.FLOAT, false, emitter.Stride(), 0)
gl.DrawArrays(gl.TRIANGLES, 0, emitter.Len()*particleLen/vertexDim)
gl.DisableVertexAttribArray(shader.Attrib("vertCoord"))
}
开发者ID:shazow,项目名称:linerage3d,代码行数:10,代码来源:particle.go
示例20: glInit
func glInit() {
var err error
glimage.program, err = CreateProgram(vertexShader, fragmentShader)
if err != nil {
panic(err)
}
glimage.quadXY = gl.GenBuffer()
glimage.quadUV = gl.GenBuffer()
gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadXY)
gl.BufferData(gl.ARRAY_BUFFER, gl.STATIC_DRAW, quadXYCoords)
gl.BindBuffer(gl.ARRAY_BUFFER, glimage.quadUV)
gl.BufferData(gl.ARRAY_BUFFER, gl.STATIC_DRAW, quadUVCoords)
glimage.pos = gl.GetAttribLocation(glimage.program, "pos")
glimage.mvp = gl.GetUniformLocation(glimage.program, "mvp")
glimage.uvp = gl.GetUniformLocation(glimage.program, "uvp")
glimage.inUV = gl.GetAttribLocation(glimage.program, "inUV")
glimage.textureSample = gl.GetUniformLocation(glimage.program, "textureSample")
}
开发者ID:Miaque,项目名称:mojo,代码行数:21,代码来源:glimage.go
注:本文中的golang.org/x/mobile/gl.BindBuffer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论