当前位置: 首页>>代码示例>>Golang>>正文


Golang OpenGl.TexImage2D方法代码示例

本文整理汇总了Golang中github.com/inkyblackness/shocked-client/opengl.OpenGl.TexImage2D方法的典型用法代码示例。如果您正苦于以下问题:Golang OpenGl.TexImage2D方法的具体用法?Golang OpenGl.TexImage2D怎么用?Golang OpenGl.TexImage2D使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/inkyblackness/shocked-client/opengl.OpenGl的用法示例。


在下文中一共展示了OpenGl.TexImage2D方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: NewBitmapTexture

// NewBitmapTexture downloads the provided raw data to OpenGL and returns a BitmapTexture instance.
func NewBitmapTexture(gl opengl.OpenGl, width, height int, pixelData []byte) *BitmapTexture {
	textureWidth := powerOfTwo(width)
	textureHeight := powerOfTwo(height)
	tex := &BitmapTexture{
		gl:     gl,
		width:  float32(width),
		height: float32(height),
		handle: gl.GenTextures(1)[0]}
	tex.u = tex.width / float32(textureWidth)
	tex.v = tex.height / float32(textureHeight)

	// The texture has to be blown up to use RGBA from the start;
	// OpenGL 3.2 doesn't know ALPHA format, Open GL ES 2.0 (WebGL) doesn't know RED or R8.
	rgbaData := make([]byte, textureWidth*textureHeight*BytesPerRgba)
	for y := 0; y < height; y++ {
		inStart := y * width
		outOffset := y * textureWidth * BytesPerRgba
		for x := 0; x < width; x++ {
			value := pixelData[inStart+x]
			rgbaData[outOffset+0] = value
			rgbaData[outOffset+1] = value
			rgbaData[outOffset+2] = value
			rgbaData[outOffset+3] = value
			outOffset += BytesPerRgba
		}
	}

	gl.BindTexture(opengl.TEXTURE_2D, tex.handle)
	gl.TexImage2D(opengl.TEXTURE_2D, 0, opengl.RGBA, int32(textureWidth), int32(textureHeight),
		0, opengl.RGBA, opengl.UNSIGNED_BYTE, rgbaData)
	gl.TexParameteri(opengl.TEXTURE_2D, opengl.TEXTURE_MAG_FILTER, opengl.NEAREST)
	gl.TexParameteri(opengl.TEXTURE_2D, opengl.TEXTURE_MIN_FILTER, opengl.NEAREST)
	gl.GenerateMipmap(opengl.TEXTURE_2D)
	gl.BindTexture(opengl.TEXTURE_2D, 0)

	return tex
}
开发者ID:inkyblackness,项目名称:shocked-client,代码行数:38,代码来源:BitmapTexture.go


注:本文中的github.com/inkyblackness/shocked-client/opengl.OpenGl.TexImage2D方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。