mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-12 22:17:26 +01:00
graphicsdriver/metal: Specify the texture type explicitly
This commit is contained in:
parent
a1abe6b728
commit
9f76b96c1f
@ -435,6 +435,7 @@ func (g *Graphics) genNextImageID() driver.ImageID {
|
|||||||
func (g *Graphics) NewImage(width, height int) (driver.Image, error) {
|
func (g *Graphics) NewImage(width, height int) (driver.Image, error) {
|
||||||
g.checkSize(width, height)
|
g.checkSize(width, height)
|
||||||
td := mtl.TextureDescriptor{
|
td := mtl.TextureDescriptor{
|
||||||
|
TextureType: mtl.TextureType2D,
|
||||||
PixelFormat: mtl.PixelFormatRGBA8UNorm,
|
PixelFormat: mtl.PixelFormatRGBA8UNorm,
|
||||||
Width: graphics.InternalImageSize(width),
|
Width: graphics.InternalImageSize(width),
|
||||||
Height: graphics.InternalImageSize(height),
|
Height: graphics.InternalImageSize(height),
|
||||||
|
@ -150,6 +150,7 @@ fragment float4 FragmentShader(Vertex in [[stage_in]]) {
|
|||||||
|
|
||||||
// Create an output texture to render into.
|
// Create an output texture to render into.
|
||||||
td := mtl.TextureDescriptor{
|
td := mtl.TextureDescriptor{
|
||||||
|
TextureType: mtl.TextureType2D,
|
||||||
PixelFormat: mtl.PixelFormatRGBA8UNorm,
|
PixelFormat: mtl.PixelFormatRGBA8UNorm,
|
||||||
Width: 80,
|
Width: 80,
|
||||||
Height: 20,
|
Height: 20,
|
||||||
|
@ -87,6 +87,16 @@ const (
|
|||||||
FeatureSet_macOS_ReadWriteTextureTier2 FeatureSet = 10002
|
FeatureSet_macOS_ReadWriteTextureTier2 FeatureSet = 10002
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TextureType defines The dimension of each image, including whether multiple images are arranged into an array or
|
||||||
|
// a cube.
|
||||||
|
//
|
||||||
|
// Reference: https://developer.apple.com/documentation/metal/mtltexturetype
|
||||||
|
type TextureType uint16
|
||||||
|
|
||||||
|
const (
|
||||||
|
TextureType2D TextureType = 2
|
||||||
|
)
|
||||||
|
|
||||||
// PixelFormat defines data formats that describe the organization
|
// PixelFormat defines data formats that describe the organization
|
||||||
// and characteristics of individual pixels in a texture.
|
// and characteristics of individual pixels in a texture.
|
||||||
//
|
//
|
||||||
@ -362,6 +372,7 @@ type ClearColor struct {
|
|||||||
//
|
//
|
||||||
// Reference: https://developer.apple.com/documentation/metal/mtltexturedescriptor.
|
// Reference: https://developer.apple.com/documentation/metal/mtltexturedescriptor.
|
||||||
type TextureDescriptor struct {
|
type TextureDescriptor struct {
|
||||||
|
TextureType TextureType
|
||||||
PixelFormat PixelFormat
|
PixelFormat PixelFormat
|
||||||
Width int
|
Width int
|
||||||
Height int
|
Height int
|
||||||
@ -481,6 +492,7 @@ func (d Device) MakeBufferWithLength(length uintptr, opt ResourceOptions) Buffer
|
|||||||
// Reference: https://developer.apple.com/documentation/metal/mtldevice/1433425-maketexture.
|
// Reference: https://developer.apple.com/documentation/metal/mtldevice/1433425-maketexture.
|
||||||
func (d Device) MakeTexture(td TextureDescriptor) Texture {
|
func (d Device) MakeTexture(td TextureDescriptor) Texture {
|
||||||
descriptor := C.struct_TextureDescriptor{
|
descriptor := C.struct_TextureDescriptor{
|
||||||
|
TextureType: C.uint16_t(td.TextureType),
|
||||||
PixelFormat: C.uint16_t(td.PixelFormat),
|
PixelFormat: C.uint16_t(td.PixelFormat),
|
||||||
Width: C.uint_t(td.Width),
|
Width: C.uint_t(td.Width),
|
||||||
Height: C.uint_t(td.Height),
|
Height: C.uint_t(td.Height),
|
||||||
|
@ -69,6 +69,7 @@ struct RenderPassDescriptor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct TextureDescriptor {
|
struct TextureDescriptor {
|
||||||
|
uint16_t TextureType;
|
||||||
uint16_t PixelFormat;
|
uint16_t PixelFormat;
|
||||||
uint_t Width;
|
uint_t Width;
|
||||||
uint_t Height;
|
uint_t Height;
|
||||||
|
@ -113,6 +113,7 @@ void *Device_MakeBufferWithLength(void *device, size_t length,
|
|||||||
|
|
||||||
void *Device_MakeTexture(void *device, struct TextureDescriptor descriptor) {
|
void *Device_MakeTexture(void *device, struct TextureDescriptor descriptor) {
|
||||||
MTLTextureDescriptor *textureDescriptor = [[MTLTextureDescriptor alloc] init];
|
MTLTextureDescriptor *textureDescriptor = [[MTLTextureDescriptor alloc] init];
|
||||||
|
textureDescriptor.textureType = descriptor.TextureType;
|
||||||
textureDescriptor.pixelFormat = descriptor.PixelFormat;
|
textureDescriptor.pixelFormat = descriptor.PixelFormat;
|
||||||
textureDescriptor.width = descriptor.Width;
|
textureDescriptor.width = descriptor.Width;
|
||||||
textureDescriptor.height = descriptor.Height;
|
textureDescriptor.height = descriptor.Height;
|
||||||
|
@ -93,6 +93,7 @@ fragment float4 FragmentShader(Vertex in [[stage_in]]) {
|
|||||||
|
|
||||||
// Create an output texture to render into.
|
// Create an output texture to render into.
|
||||||
td := mtl.TextureDescriptor{
|
td := mtl.TextureDescriptor{
|
||||||
|
TextureType: mtl.TextureType2D,
|
||||||
PixelFormat: mtl.PixelFormatRGBA8UNorm,
|
PixelFormat: mtl.PixelFormatRGBA8UNorm,
|
||||||
Width: 512,
|
Width: 512,
|
||||||
Height: 512,
|
Height: 512,
|
||||||
|
Loading…
Reference in New Issue
Block a user