本文整理匯總了Golang中github.com/banthar/gl.Rotatef函數的典型用法代碼示例。如果您正苦於以下問題:Golang Rotatef函數的具體用法?Golang Rotatef怎麽用?Golang Rotatef使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Rotatef函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: DrawPlayerItems
func (self *Picker) DrawPlayerItems(t int64) {
gl.PushMatrix()
gl.LoadIdentity()
for i := 0; i < 5; i++ {
item := ThePlayer.equippedItems[i]
if item != ITEM_NONE {
angle := -(float64(i) + 1.5) * math.Pi / 4
gl.LoadIdentity()
x := self.x - self.actionItemRadius*float32(math.Sin(angle))
y := self.y + self.actionItemRadius*float32(math.Cos(angle))
gl.Translatef(x, y, 0)
gl.Rotatef(360*float32(math.Sin(float64(t)/1e10+float64(i))), 1.0, 0.0, 0.0)
gl.Rotatef(360*float32(math.Cos(float64(t)/1e10+float64(i))), 0.0, 1.0, 0.0)
gl.Rotatef(360*float32(math.Sin(float64(t)/1e10+float64(i))), 0.0, 0.0, 1.0)
gl.Scalef(blockscale, blockscale, blockscale)
gVertexBuffer.Reset()
TerrainCube(gVertexBuffer, 0, 0, 0, [18]uint16{}, item, FACE_NONE)
gVertexBuffer.RenderDirect(false)
gl.LoadIdentity()
gl.Translatef(x-17*PIXEL_SCALE, y-19*PIXEL_SCALE, 20)
consoleFont.Print(fmt.Sprintf("%d", ThePlayer.inventory[item]))
}
}
gl.PopMatrix()
}
示例2: drawScene
func drawScene() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.LoadIdentity()
gl.Translatef(-1.5, 0, -6)
gl.Rotatef(trisAngle, 0, 1, 0)
gl.Begin(gl.TRIANGLES)
gl.Color3f(1, 0, 0)
gl.Vertex3f(0, 1, 0)
gl.Color3f(0, 1, 0)
gl.Vertex3f(-1, -1, 0)
gl.Color3f(0, 0, 1)
gl.Vertex3f(1, -1, 0)
gl.End()
gl.LoadIdentity()
gl.Translatef(1.5, 0, -6)
gl.Rotatef(quadAngle, 1, 0, 0)
gl.Color3f(0.5, 0.5, 1.0)
gl.Begin(gl.QUADS)
gl.Vertex3f(-1, 1, 0)
gl.Vertex3f(1, 1, 0)
gl.Vertex3f(1, -1, 0)
gl.Vertex3f(-1, -1, 0)
gl.End()
trisAngle += 0.2
quadAngle -= 0.15
glfw.SwapBuffers()
}
示例3: main
func main() {
var err error
if err = glfw.Init(); err != nil {
fmt.Fprintf(os.Stderr, "[e] %v\n", err)
return
}
defer glfw.Terminate()
// Open window with FSAA samples (if possible).
glfw.OpenWindowHint(glfw.FsaaSamples, 4)
if err = glfw.OpenWindow(400, 400, 0, 0, 0, 0, 0, 0, glfw.Windowed); err != nil {
fmt.Fprintf(os.Stderr, "[e] %v\n", err)
return
}
defer glfw.CloseWindow()
glfw.SetWindowTitle("Aliasing Detector")
glfw.SetSwapInterval(1)
if samples := glfw.WindowParam(glfw.FsaaSamples); samples != 0 {
fmt.Fprintf(os.Stdout, "Context reports FSAA is supported with %d samples\n", samples)
} else {
fmt.Fprintf(os.Stdout, "Context reports FSAA is unsupported\n")
}
gl.MatrixMode(gl.PROJECTION)
glu.Perspective(0, 1, 0, 1)
for glfw.WindowParam(glfw.Opened) == 1 {
time := float32(glfw.Time())
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.LoadIdentity()
gl.Translatef(0.5, 0, 0)
gl.Rotatef(time, 0, 0, 1)
gl.Enable(GL_MULTISAMPLE_ARB)
gl.Color3f(1, 1, 1)
gl.Rectf(-0.25, -0.25, 0.25, 0.25)
gl.LoadIdentity()
gl.Translatef(-0.5, 0, 0)
gl.Rotatef(time, 0, 0, 1)
gl.Disable(GL_MULTISAMPLE_ARB)
gl.Color3f(1, 1, 1)
gl.Rectf(-0.25, -0.25, 0.25, 0.25)
glfw.SwapBuffers()
}
}
示例4: drawGLScene
// Here goes our drawing code
func drawGLScene() {
// Clear the screen and depth buffer
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
// Move left 1.5 units and into the screen 6.0 units.
gl.LoadIdentity()
gl.Translatef(-1.5, 0.0, -6.0)
gl.Rotatef(float32(rtri), 0.0, 1.0, 0.0) // Rotate the triangle on the Y axis
gl.Begin(gl.TRIANGLES) // Draw triangles
gl.Color3f(1.0, 0.0, 0.0) // Set The Color To Red
gl.Vertex3f(0.0, 1.0, 0.0) // top
gl.Color3f(0.0, 1.0, 0.0) // Set The Color To Red
gl.Vertex3f(-1.0, -1.0, 0.0) // bottom left
gl.Color3f(0.0, 0.0, 1.0) // Set The Color To Red
gl.Vertex3f(1.0, -1.0, 0.0) // bottom right
gl.End() // finish drawing the triangle
// Move right 3 units
gl.LoadIdentity()
gl.Translatef(1.5, 0.0, -6.0)
gl.Color3f(0.5, 0.5, 1.0) // Set The Color To Blue One Time Only
gl.Rotatef(float32(rquad), 1.0, 0.0, 0.0) // rotate the quad on the X axis
gl.Begin(gl.QUADS) // draw quads
gl.Vertex3f(-1.0, 1.0, 0.0) // top left
gl.Vertex3f(1.0, 1.0, 0.0) // top right
gl.Vertex3f(1.0, -1.0, 0.0) // bottom right
gl.Vertex3f(-1.0, -1.0, 0.0) // bottom left
gl.End() // done drawing the quad
// Draw to the screen
sdl.GL_SwapBuffers()
rtri += 0.2 // Increase The Rotation Variable For The Triangle
rquad -= 0.15 // Decrease The Rotation Variable For The Quad
// Gather our frames per second
frames++
t := sdl.GetTicks()
if t-t0 >= 5000 {
seconds := (t - t0) / 1000.0
fps := frames / seconds
fmt.Println(frames, "frames in", seconds, "seconds =", fps, "FPS")
t0 = t
frames = 0
}
}
示例5: display
func display() {
gl.Clear(gl.COLOR_BUFFER_BIT)
bitmap_output(40, 35, "This is written in a GLUT bitmap font.", glut.BITMAP_TIMES_ROMAN_24)
bitmap_output(30, 210, "More bitmap text is a fixed 9 by 15 font.", glut.BITMAP_9_BY_15)
bitmap_output(70, 240, " Helvetica is yet another bitmap font.", glut.BITMAP_HELVETICA_18)
gl.MatrixMode(gl.PROJECTION)
gl.PushMatrix()
gl.LoadIdentity()
glu.Perspective(40.0, 1.0, 0.1, 20.0)
gl.MatrixMode(gl.MODELVIEW)
gl.PushMatrix()
glu.LookAt(0.0, 0.0, 4.0, /* eye is at (0,0,30) */
0.0, 0.0, 0.0, /* center is at (0,0,0) */
0.0, 1.0, 0.0) /* up is in postivie Y direction */
gl.PushMatrix()
gl.Translatef(0, 0, -4)
gl.Rotatef(50, 0, 1, 0)
stroke_output(-2.5, 1.1, " This is written in a", glut.STROKE_ROMAN)
stroke_output(-2.5, 0, " GLUT stroke font.", glut.STROKE_ROMAN)
stroke_output(-2.5, -1.1, "using 3D perspective.", glut.STROKE_ROMAN)
gl.PopMatrix()
gl.MatrixMode(gl.MODELVIEW)
gl.PopMatrix()
gl.MatrixMode(gl.PROJECTION)
gl.PopMatrix()
gl.MatrixMode(gl.MODELVIEW)
gl.Flush()
}
示例6: drawShip
func drawShip(angle float32) {
gl.PushMatrix()
gl.Translatef(x, y, 0.0)
gl.Rotatef(angle, 0.0, 0.0, 1.0)
if thrust {
gl.Color3f(1.0, 0.0, 0.0)
gl.Begin(gl.LINE_STRIP)
gl.Vertex2f(-0.75, -0.5)
gl.Vertex2f(-1.75, 0)
gl.Vertex2f(-0.75, 0.5)
gl.End()
}
gl.Color3f(1.0, 1.0, 0.0)
gl.Begin(gl.LINE_LOOP)
gl.Vertex2f(2.0, 0.0)
gl.Vertex2f(-1.0, -1.0)
gl.Vertex2f(-0.5, 0.0)
gl.Vertex2f(-1.0, 1.0)
gl.Vertex2f(2.0, 0.0)
gl.End()
if shield {
gl.Color3f(0.1, 0.1, 1.0)
gl.Begin(gl.LINE_LOOP)
for rad := 0.0; rad < 12.0; rad += 1.0 {
gl.Vertex2f(
float32(2.3*math.Cos(2*float64(rad)/math.Pi)+0.2),
float32(2.0*math.Sin(2*float64(rad)/math.Pi)))
}
gl.End()
}
gl.PopMatrix()
}
示例7: Draw
func (s *Sprite) Draw(x, y, angle, scale float32, blend bool) {
gl.Enable(gl.TEXTURE_2D)
gl.Disable(gl.COLOR_MATERIAL)
if blend {
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
gl.Enable(gl.BLEND)
} else {
gl.Disable(gl.BLEND)
gl.BlendFunc(gl.ONE, gl.ZERO)
}
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Translatef(x, y, 0)
gl.Rotatef(angle*360/(2*math.Pi), 0, 0, 1)
gl.Scalef(scale, scale, 1)
s.tex.Bind(gl.TEXTURE_2D)
gl.Begin(gl.QUADS)
gl.Color3f(1, 1, 1)
gl.TexCoord2d(0, 0)
gl.Vertex3f(-0.5*s.width, -0.5*s.height, 0)
gl.TexCoord2d(1, 0)
gl.Vertex3f(0.5*s.width, -0.5*s.height, 0)
gl.TexCoord2d(1, 1)
gl.Vertex3f(0.5*s.width, 0.5*s.height, 0)
gl.TexCoord2d(0, 1)
gl.Vertex3f(-0.5*s.width, 0.5*s.height, 0)
gl.End()
gl.Disable(gl.TEXTURE_2D)
gl.Disable(gl.BLEND)
}
示例8: drawScene
func drawScene() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.LoadIdentity()
gl.Translatef(0, 0, -20+globalState.MousePos.Z*globalState.speed)
gl.Rotatef(globalState.Rot.X, 1, 0, 0)
gl.Rotatef(globalState.Rot.Y, 0, 1, 0)
gl.Rotatef(globalState.Rot.Z, 0, 0, 1)
if globalState.speed != 1 {
gl.Scalef(globalState.speed, globalState.speed, globalState.speed)
}
gl.RenderMode(gl.RENDER)
gl.Begin(gl.QUADS)
for i, _ := range mesh.Faces {
if colors, ok := faceColor[i]; ok {
gl.Color3f(colors[0], colors[1], colors[2])
} else {
faceColor[i] = make([]float32, 3)
faceColor[i][0] = rand.Float32()
faceColor[i][1] = rand.Float32()
faceColor[i][2] = rand.Float32()
gl.Color3f(faceColor[i][0], faceColor[i][1], faceColor[i][2])
}
face := &mesh.Faces[i]
for j, _ := range face.Vertices {
var v *wfobj.Vertex
if len(face.Normals) > 0 {
v = &face.Normals[j]
gl.Normal3f(v.X, v.Y, v.Z)
}
v = &face.Vertices[j]
gl.Vertex3f(v.X, v.Y, v.Z)
}
}
gl.End()
gl.Finish()
gl.Flush()
sdl.GL_SwapBuffers()
}
示例9: drawGLScene
// Here goes our drawing code
func drawGLScene(sector Sector) {
xtrans := gl.GLfloat(-xpos)
ztrans := gl.GLfloat(-zpos)
ytrans := gl.GLfloat(-walkbias - 0.25)
scenroty := gl.GLfloat(360.0 - yrot)
// Clear the screen and depth buffer
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
// reset the view
gl.LoadIdentity()
// Rotate up and down to look up and down
gl.Rotatef(float32(lookupdown), 1.0, 0.0, 0.0)
// Rotate depending on direction player is facing
gl.Rotatef(float32(scenroty), 0.0, 1.0, 0.0)
// translate the scene based on player position
gl.Translatef(float32(xtrans), float32(ytrans), float32(ztrans))
gl.BindTexture(gl.TEXTURE_2D, uint(textures[filter]))
for _, vertices := range sector {
gl.Begin(gl.TRIANGLES)
for _, triangle := range *vertices {
gl.Normal3f(0.0, 0.0, 1.0)
gl.TexCoord2f(float32(triangle.u), float32(triangle.v))
gl.Vertex3f(float32(triangle.x), float32(triangle.y), float32(triangle.z))
}
gl.End()
}
// Draw to the screen
sdl.GL_SwapBuffers()
// Gather our frames per second
frames++
t := sdl.GetTicks()
if t-t0 >= 5000 {
seconds := (t - t0) / 1000.0
fps := frames / seconds
fmt.Println(frames, "frames in", seconds, "seconds =", fps, "FPS")
t0 = t
frames = 0
}
}
示例10: DrawItem
func (self *Inventory) DrawItem(t int64, quantity uint16, blockid uint16, r Rect) {
gl.PushMatrix()
gl.LoadIdentity()
const blocksize = float32(0.3)
i := 1
gl.Translated(r.x+r.sizex/2, r.y+r.sizey/2+4*PIXEL_SCALE, 0)
gl.Rotatef(360*float32(math.Sin(float64(t)/1e10+float64(i))), 1.0, 0.0, 0.0)
gl.Rotatef(360*float32(math.Cos(float64(t)/1e10+float64(i))), 0.0, 1.0, 0.0)
gl.Rotatef(360*float32(math.Sin(float64(t)/1e10+float64(i))), 0.0, 0.0, 1.0)
gl.Scalef(blocksize, blocksize, blocksize)
gVertexBuffer.Reset()
TerrainCube(gVertexBuffer, Vectori{}, [18]uint16{}, blockid, FACE_NONE)
gVertexBuffer.RenderDirect(false)
gl.LoadIdentity()
gl.Translated(r.x+5*PIXEL_SCALE, r.y+2*PIXEL_SCALE, 0)
inventoryItemFont.Print(fmt.Sprintf("%d", quantity))
gl.PopMatrix()
}
示例11: render
func (s sprite) render() {
gl.Translatef(float32(s.X), float32(s.Y), float32(s.Z))
gl.Rotatef(90.0, 1.0, 0.0, 0.0)
s.tex.Bind(gl.TEXTURE_2D)
gl.Begin(gl.QUADS)
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(-s.width/2.0, -s.height/2.0, 0.0)
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(s.width/2.0, -s.height/2.0, 0.0)
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(s.width/2.0, s.height/2.0, 0.0)
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(-s.width/2.0, s.height/2.0, 0.0)
gl.End()
s.tex.Unbind(gl.TEXTURE_2D)
}
示例12: reshape
func reshape(width, height int) {
shift, aspect := 0, float64(width)/float64(height)
if aspect > 2 {
aspect = 2
shift = width/2 - height
width = height * 2
}
gl.Viewport(shift, 0, width, height)
gl.Enable(gl.DEPTH_TEST)
gl.Enable(gl.COLOR_MATERIAL)
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
glu.Perspective(45, aspect, NEAR_Z, FAR_Z)
gl.Enable(gl.LIGHTING)
gl.Lightfv(gl.LIGHT0, gl.POSITION, []float32{-2, -3, 5, 0})
gl.Lightfv(gl.LIGHT0, gl.AMBIENT, []float32{0.1, 0.1, 0.2, 1})
gl.Lightfv(gl.LIGHT0, gl.DIFFUSE, []float32{0.4, 0.35, 0.2, 1})
gl.Lightfv(gl.LIGHT0, gl.SPECULAR, []float32{1, 1, 1, 1})
gl.Enable(gl.LIGHT0)
gl.Rotatef(-30, 1, 0, 0)
gl.Translatef(0, 0, -5)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Lightfv(gl.LIGHT1, gl.AMBIENT, []float32{0, 0, 0, 1})
gl.Lightfv(gl.LIGHT1, gl.DIFFUSE, []float32{0.4, 0.4, 0.4, 1})
gl.Lightfv(gl.LIGHT1, gl.SPECULAR, []float32{1, 1, 1, 1})
gl.Enable(gl.LIGHT1)
}
示例13: drawGLScene
// Here goes our drawing code
func drawGLScene() {
// Clear the screen and depth buffer
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
// Move left 1.5 units and into the screen 6.0 units.
gl.LoadIdentity()
gl.Translatef(-1.5, 0.0, -6.0)
gl.Rotatef(float32(rtri), 0.0, 1.0, 0.0) // Rotate the triangle on the Y axis
gl.Begin(gl.TRIANGLES) // Draw triangles
gl.Color3f(1.0, 0.0, 0.0) /* Red */
gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Front) */
gl.Color3f(0.0, 1.0, 0.0) /* Green */
gl.Vertex3f(-1.0, -1.0, 1.0) /* Left Of Triangle (Front) */
gl.Color3f(0.0, 0.0, 1.0) /* Blue */
gl.Vertex3f(1.0, -1.0, 1.0) /* Right Of Triangle (Front) */
gl.Color3f(1.0, 0.0, 0.0) /* Red */
gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Right) */
gl.Color3f(0.0, 0.0, 1.0) /* Blue */
gl.Vertex3f(1.0, -1.0, 1.0) /* Left Of Triangle (Right) */
gl.Color3f(0.0, 1.0, 0.0) /* Green */
gl.Vertex3f(1.0, -1.0, -1.0) /* Right Of Triangle (Right) */
gl.Color3f(1.0, 0.0, 0.0) /* Red */
gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Back) */
gl.Color3f(0.0, 1.0, 0.0) /* Green */
gl.Vertex3f(1.0, -1.0, -1.0) /* Left Of Triangle (Back) */
gl.Color3f(0.0, 0.0, 1.0) /* Blue */
gl.Vertex3f(-1.0, -1.0, -1.0) /* Right Of Triangle (Back) */
gl.Color3f(1.0, 0.0, 0.0) /* Red */
gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Left) */
gl.Color3f(0.0, 0.0, 1.0) /* Blue */
gl.Vertex3f(-1.0, -1.0, -1.0) /* Left Of Triangle (Left) */
gl.Color3f(0.0, 1.0, 0.0) /* Green */
gl.Vertex3f(-1.0, -1.0, 1.0) /* Right Of Triangle (Left) */
gl.End() // finish drawing the triangle
// Move right 3 units
gl.LoadIdentity()
gl.Translatef(1.5, 0.0, -7.0)
gl.Rotatef(float32(rquad), 1.0, 1.0, 1.0) // rotate the quad on the X axis
gl.Begin(gl.QUADS) // draw quads
gl.Color3f(0.0, 1.0, 0.0) // Set The Color To Green
gl.Vertex3f(1.0, 1.0, -1.0) // Top Right Of The Quad (Top)
gl.Vertex3f(-1.0, 1.0, -1.0) // Top Left Of The Quad (Top)
gl.Vertex3f(-1.0, 1.0, 1.0) // Bottom Left Of The Quad (Top)
gl.Vertex3f(1.0, 1.0, 1.0) // Bottom Right Of The Quad (Top)
gl.Color3f(1.0, 0.5, 0.0) // Set The Color To Orange
gl.Vertex3f(1.0, -1.0, 1.0) // Top Right Of The Quad (Bottom)
gl.Vertex3f(-1.0, -1.0, 1.0) // Top Left Of The Quad (Bottom)
gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom Left Of The Quad (Bottom)
gl.Vertex3f(1.0, -1.0, -1.0) // Bottom Right Of The Quad (Bottom)
gl.Color3f(1.0, 0.0, 0.0) // Set The Color To Red
gl.Vertex3f(1.0, 1.0, 1.0) // Top Right Of The Quad (Front)
gl.Vertex3f(-1.0, 1.0, 1.0) // Top Left Of The Quad (Front)
gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom Left Of The Quad (Front)
gl.Vertex3f(1.0, -1.0, 1.0) // Bottom Right Of The Quad (Front)
gl.Color3f(1.0, 1.0, 0.0) // Set The Color To Yellow
gl.Vertex3f(1.0, -1.0, -1.0) // Bottom Left Of The Quad (Back)
gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom Right Of The Quad (Back)
gl.Vertex3f(-1.0, 1.0, -1.0) // Top Right Of The Quad (Back)
gl.Vertex3f(1.0, 1.0, -1.0) // Top Left Of The Quad (Back)
gl.Color3f(0.0, 0.0, 1.0) // Set The Color To Blue
gl.Vertex3f(-1.0, 1.0, 1.0) // Top Right Of The Quad (Left)
gl.Vertex3f(-1.0, 1.0, -1.0) // Top Left Of The Quad (Left)
gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom Left Of The Quad (Left)
gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom Right Of The Quad (Left)
gl.Color3f(1.0, 0.0, 1.0) // Set The Color To Violet
gl.Vertex3f(1.0, 1.0, -1.0) // Top Right Of The Quad (Right)
gl.Vertex3f(1.0, 1.0, 1.0) // Top Left Of The Quad (Right)
gl.Vertex3f(1.0, -1.0, 1.0) // Bottom Left Of The Quad (Right)
gl.Vertex3f(1.0, -1.0, -1.0) // Bottom Right Of The Quad (Right)
gl.End() // done drawing the quad
// Draw to the screen
sdl.GL_SwapBuffers()
rtri += 0.2 // Increase The Rotation Variable For The Triangle
rquad -= 0.15 // Decrease The Rotation Variable For The Quad
// Gather our frames per second
frames++
t := sdl.GetTicks()
if t-t0 >= 5000 {
seconds := (t - t0) / 1000.0
fps := frames / seconds
fmt.Println(frames, "frames in", seconds, "seconds =", fps, "FPS")
t0 = t
frames = 0
}
}
示例14: draw_screen
func draw_screen() {
angle := float32(0.0)
v := [][]float32{
{-1.0, -1.0, 1.0},
{1.0, -1.0, 1.0},
{1.0, 1.0, 1.0},
{-1.0, 1.0, 1.0},
{-1.0, -1.0, -1.0},
{1.0, -1.0, -1.0},
{1.0, 1.0, -1.0},
{-1.0, 1.0, -1.0}}
red := []byte{255, 0, 0, 255}
green := []byte{0, 255, 0, 255}
blue := []byte{0, 0, 255, 255}
white := []byte{255, 255, 255, 255}
yellow := []byte{0, 255, 255, 255}
black := []byte{0, 0, 0, 255}
orange := []byte{255, 255, 0, 255}
purple := []byte{255, 0, 255, 0}
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Translatef(0.0, 0.0, -5.0)
gl.Rotatef(angle, 0.0, 1.0, 0.0)
if should_rotate {
angle++
if angle > 360.0 {
angle = 0.0
}
}
gl.Begin(gl.TRIANGLES)
gl.Color4ubv(red)
gl.Vertex3fv(v[0])
gl.Color4ubv(green)
gl.Vertex3fv(v[1])
gl.Color4ubv(blue)
gl.Vertex3fv(v[2])
gl.Color4ubv(red)
gl.Vertex3fv(v[0])
gl.Color4ubv(blue)
gl.Vertex3fv(v[2])
gl.Color4ubv(white)
gl.Vertex3fv(v[3])
gl.Color4ubv(green)
gl.Vertex3fv(v[1])
gl.Color4ubv(black)
gl.Vertex3fv(v[5])
gl.Color4ubv(orange)
gl.Vertex3fv(v[6])
gl.Color4ubv(green)
gl.Vertex3fv(v[1])
gl.Color4ubv(orange)
gl.Vertex3fv(v[6])
gl.Color4ubv(blue)
gl.Vertex3fv(v[2])
gl.Color4ubv(black)
gl.Vertex3fv(v[5])
gl.Color4ubv(yellow)
gl.Vertex3fv(v[4])
gl.Color4ubv(purple)
gl.Vertex3fv(v[7])
gl.Color4ubv(black)
gl.Vertex3fv(v[5])
gl.Color4ubv(purple)
gl.Vertex3fv(v[7])
gl.Color4ubv(orange)
gl.Vertex3fv(v[6])
gl.Color4ubv(yellow)
gl.Vertex3fv(v[4])
gl.Color4ubv(red)
gl.Vertex3fv(v[0])
gl.Color4ubv(white)
gl.Vertex3fv(v[3])
gl.Color4ubv(yellow)
gl.Vertex3fv(v[4])
gl.Color4ubv(white)
gl.Vertex3fv(v[3])
gl.Color4ubv(purple)
gl.Vertex3fv(v[7])
gl.Color4ubv(white)
gl.Vertex3fv(v[3])
gl.Color4ubv(blue)
gl.Vertex3fv(v[2])
gl.Color4ubv(orange)
gl.Vertex3fv(v[6])
gl.Color4ubv(white)
gl.Vertex3fv(v[3])
gl.Color4ubv(orange)
gl.Vertex3fv(v[6])
gl.Color4ubv(purple)
gl.Vertex3fv(v[7])
gl.Color4ubv(green)
gl.Vertex3fv(v[1])
gl.Color4ubv(red)
gl.Vertex3fv(v[0])
gl.Color4ubv(yellow)
gl.Vertex3fv(v[4])
gl.Color4ubv(green)
gl.Vertex3fv(v[1])
//.........這裏部分代碼省略.........
示例15: drawGLScene
// Here goes our drawing code
func drawGLScene() {
// Clear the screen and depth buffer
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
// Move left 1.5 units and into the screen 6.0 units.
gl.LoadIdentity()
gl.Translatef(0.0, 0.0, -7.0)
gl.Rotatef(float32(xrot), 1.0, 0.0, 0.0) /* Rotate On The X Axis */
gl.Rotatef(float32(yrot), 0.0, 1.0, 0.0) /* Rotate On The Y Axis */
gl.Rotatef(float32(zrot), 0.0, 0.0, 1.0) /* Rotate On The Z Axis */
/* Select Our Texture */
gl.BindTexture(gl.TEXTURE_2D, uint(texture))
gl.Begin(gl.QUADS) // Draw a quad
/* Front Face */
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom left
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(1.0, -1.0, 1.0) // Bottom right
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(1.0, 1.0, 1.0) // Top right
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(-1.0, 1.0, 1.0) // Top left
/* Back Face */
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom right
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(-1.0, 1.0, -1.0) // Top right
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(1.0, 1.0, -1.0) // Top left
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(1.0, -1.0, -1.0) // Bottom left
/* Top Face */
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(-1.0, 1.0, -1.0) // Top left
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(-1.0, 1.0, 1.0) // Bottom left
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(1.0, 1.0, 1.0) // Bottom right
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(1.0, 1.0, -1.0) // Top right
/* Bottom Face */
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(-1.0, -1.0, -1.0) // Top right
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(1.0, -1.0, -1.0) // Top left
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(1.0, -1.0, 1.0) // Bottom left
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom right
/* Right face */
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(1.0, -1.0, -1.0) // Bottom right
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(1.0, 1.0, -1.0) // Top right
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(1.0, 1.0, 1.0) // Top left
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(1.0, -1.0, 1.0) // Bottom left
/* Left Face */
gl.TexCoord2f(1.0, 0.0)
gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom left
gl.TexCoord2f(0.0, 0.0)
gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom right
gl.TexCoord2f(0.0, 1.0)
gl.Vertex3f(-1.0, 1.0, 1.0) // Top right
gl.TexCoord2f(1.0, 1.0)
gl.Vertex3f(-1.0, 1.0, -1.0) // Top left
gl.End() // done drawing the quad
// Draw to the screen
sdl.GL_SwapBuffers()
xrot += 0.3 /* X Axis Rotation */
yrot += 0.2 /* Y Axis Rotation */
zrot += 0.4 /* Z Axis Rotation */
// Gather our frames per second
frames++
t := sdl.GetTicks()
if t-t0 >= 5000 {
seconds := (t - t0) / 1000.0
fps := frames / seconds
fmt.Println(frames, "frames in", seconds, "seconds =", fps, "FPS")
t0 = t
frames = 0
}
}