catgl

package module
v0.0.0-...-6f84953 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2019 License: GPL-3.0 Imports: 16 Imported by: 0

README

CatGl

介绍

golang写的gl3D库

这是个坑
如果要用请谨慎
编译环境
  1. msys
  2. GCC
  3. Go
依赖环境
  1. Gl库: github.com/go-gl/gl/v4.6-core/gl
  2. 算法库: github.com/go-gl/mathgl/mgl32

Documentation

Index

Constants

View Source
const (
	// 纹理单元
	TEXTURE   = 0x1702
	TEXTURE0  = 0x84C0
	TEXTURE1  = 0x84C1
	TEXTURE10 = 0x84CA
	TEXTURE11 = 0x84CB
	TEXTURE12 = 0x84CC
	TEXTURE13 = 0x84CD
	TEXTURE14 = 0x84CE
	TEXTURE15 = 0x84CF
	TEXTURE16 = 0x84D0
	TEXTURE17 = 0x84D1
	TEXTURE18 = 0x84D2
	TEXTURE19 = 0x84D3
	TEXTURE2  = 0x84C2
	TEXTURE20 = 0x84D4
	TEXTURE21 = 0x84D5
	TEXTURE22 = 0x84D6
	TEXTURE23 = 0x84D7
	TEXTURE24 = 0x84D8
	TEXTURE25 = 0x84D9
	TEXTURE26 = 0x84DA
	TEXTURE27 = 0x84DB
	TEXTURE28 = 0x84DC
	TEXTURE29 = 0x84DD
	TEXTURE3  = 0x84C3
	TEXTURE30 = 0x84DE
	TEXTURE31 = 0x84DF
	TEXTURE4  = 0x84C4
	TEXTURE5  = 0x84C5
	TEXTURE6  = 0x84C6
	TEXTURE7  = 0x84C7
	TEXTURE8  = 0x84C8
	TEXTURE9  = 0x84C9
	// 纹理类型
	TEXTURE1D                 = 0x0DE0
	TEXTURE1DARRAY            = 0x8C18
	TEXTURE2D                 = 0x0DE1
	TEXTURE2DARRAY            = 0x8C1A
	TEXTURE2DMULTISAMPLE      = 0x9100
	TEXTURE2DMULTISAMPLEARRAY = 0x9102
	TEXTURE3D                 = 0x806F
)

* 纹理变量

View Source
const (
	VertexSTATIC  = gl.STATIC_DRAW  //表示该缓存区不会被修改
	VertexDyNAMIC = gl.DYNAMIC_DRAW //表示该缓存区会被周期性更改
	VertexSTREAM  = gl.STREAM_DRAW  //表示该缓存区会被频繁更改
)

/ 顶点类

默认顶点类

? 日志 ! 2019-8-17 重写 /

Variables

View Source
var ImageDecode map[string]func(r io.Reader) (image.Image, error)

ImageDecode 图片解码

Functions

func CreateProgram

func CreateProgram(vertexShader, geometryShader, fragmentShader uint32) (uint32, error)

CreateProgram 编译着色器程序

func CreateShader

func CreateShader(source string, shaderType uint32) (uint32, error)

CreateShader 创建着色器

func Loop

func Loop(fps int64)

Loop 主循环

func NewTexture

func NewTexture(file string, Target uint32) (uint32, error)

NewTexture 创建材质 * file 材质文件名 * Target 纹理类型

Types

type Camera

type Camera struct {
	PortUpdate
	// 场景信息
	PortScene
	Scene *PortSceneData
	// 摄像机参数
	Up     mgl32.Vec3 //? 朝向
	Eye    mgl32.Vec3 //? 位置
	Center mgl32.Vec3 //? 视点
	// 投影矩阵
	Projection mgl32.Mat4
}

Camera 相机类

func NewCamera

func NewCamera(x float32, y float32, z float32) *Camera

NewCamera 创建摄像机 ! x,y,z 摄像机位置

func (*Camera) GetSceneData

func (C *Camera) GetSceneData() *PortSceneData

GetSceneData 得到场景信息

func (*Camera) SetProjection

func (C *Camera) SetProjection(fovy, aspect, zNear, zFar float32) *Camera

SetProjection 设置投影矩阵 ! fovy 视角 ! aspect 屏幕宽高比 ! zNear 近平面距离 ! zFar 远平面距离

func (*Camera) Update

func (C *Camera) Update()

Update 更新接口

type CatGl

type CatGl struct {
	PortCatGl
	// 参数
	Color          [4]float32
	Window         *glfw.Window
	AspectRatio    float32 //? 屏幕高宽比
	Update         PortUpdate
	CallBackUpdate func()
}

CatGl gl类 ! 实现上下文管理

func NewCatGl

func NewCatGl(Width, Height int, Title string) (*CatGl, error)

NewCatGl 创建窗口 ! Width ! Height ! Title

func (*CatGl) Destroy

func (Cgl *CatGl) Destroy()

Destroy 销毁窗口

func (*CatGl) Loop

func (Cgl *CatGl) Loop()

Loop 默认循环

func (*CatGl) SetCamera

func (Cgl *CatGl) SetCamera(Camera PortUpdate)

SetCamera 设置摄像机

func (*CatGl) SetContext

func (Cgl *CatGl) SetContext()

SetContext 设置上下文 ! 将环境绑定到当前类的上下文

type PortCatGl

type PortCatGl interface {
	Loop()
	Destroy()
	SetContext()
	SetCamera(PortUpdate)
}

PortCatGl 主类接口

type PortID

type PortID string

PortID 内部用ID

func NewPortID

func NewPortID() PortID

NewPortID 创建

type PortScene

type PortScene interface {
	GetSceneData() *PortSceneData
}

PortScene 场景接口

type PortSceneData

type PortSceneData struct {
	// 队列信息
	QueueShader map[PortID]PortShader //? 渲染队列
	QueueVertex map[PortID]PortVertex //? 顶点队列
}

PortSceneData 场景类数据

type PortShader

type PortShader interface {
	GetShaderID() uint32 //* 得到着色器 ID
}

PortShader 着色器类接口

type PortShaderUpdate

type PortShaderUpdate interface {
	Update(Program uint32) //* 更新顶点
}

PortShaderUpdate 着色器类更新接口

type PortUpdate

type PortUpdate interface {
	Update()
}

PortUpdate 更新接口

type PortVertex

type PortVertex interface {
	PortShaderUpdate
	GetShader() PortID
}

PortVertex 顶点类接口

type Shader

type Shader struct {
	ID PortID
	PortShader
	ShaderID uint32 //? 着色器ID
	// 着色器数据
	Vertex   string //? 顶点着色器
	Geometry string //? 几何着色器
	Fragment string //? 片面着色器
}

Shader 着色器类

func NewShader

func NewShader(vertex, geometry, fragment string) (*Shader, error)

NewShader 创建着色器 ! vertex 顶点着色器 ! geometry 几何着色器 ! fragment 片面着色器

func SceneNewShader

func SceneNewShader(Scene PortScene, vertex, geometry, fragment string) (shader *Shader, err error)

SceneNewShader 场景创建着色器 ! Scene 场景对象 ! vertex 顶点着色器 ! geometry 几何着色器 ! fragment 片面着色器

func (*Shader) GetShaderID

func (s *Shader) GetShaderID() uint32

GetShaderID 得到着色器ID

type TextureShader

type TextureShader struct {
	Name    *uint8    //? 参数名称
	UnitID  uint32    //? 纹理单元
	Texture [2]uint32 //? 纹理单元 [纹理类型,纹理ID]
}

TextureShader 纹理着色器对象

type Vertex

type Vertex struct {
	ID PortID
	PortVertex
	//* 着色器 ID
	ShaderID PortID
	//* VAO
	VAO  uint32
	EBO  uint32
	Size int32
	//? 外部参数
	Position    mgl32.Mat4
	DisplayMode uint32
	Usage       uint32
	// contains filtered or unexported fields
}

Vertex 顶点类

func NewVertex

func NewVertex() (V *Vertex)

NewVertex 创建默认顶点

func SceneNewVertex

func SceneNewVertex(Scene PortScene) (V *Vertex)

SceneNewVertex 场景创建顶点 ! Scene 场景对象

func (*Vertex) GetShader

func (V *Vertex) GetShader() PortID

GetShader 着色器ID

func (*Vertex) SetIndex

func (V *Vertex) SetIndex(value []uint32)

SetIndex 设置索引

func (*Vertex) SetNormals

func (V *Vertex) SetNormals(value []float32)

SetNormals 设置法线

func (*Vertex) SetPositions

func (V *Vertex) SetPositions(value []float32)

SetPositions 设置顶点

func (*Vertex) SetUV

func (V *Vertex) SetUV(value []float32)

SetUV 设置 UV

func (*Vertex) Update

func (V *Vertex) Update(Program uint32)

Update 更新

Directories

Path Synopsis
Package uuid provides implementation of Universally Unique Identifier (UUID).
Package uuid provides implementation of Universally Unique Identifier (UUID).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL