mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-27 04:08:53 +01:00
Compare commits
No commits in common. "fab511e96b9c2be24355145ec05d5e79114fd1a1" and "960189b05199d93dafb62563a8b5ebad0b2d316f" have entirely different histories.
fab511e96b
...
960189b051
@ -61,10 +61,8 @@ ebitengine_DrawTriangles(int dst, const int *srcs, int src_count, int shader,
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" ebitengine_Error ebitengine_NewShader(
|
extern "C" ebitengine_Error
|
||||||
int *shader, const char *vertex_header, int vertex_header_size,
|
ebitengine_NewShader(int *shader, const ebitengine_PrecompiledShader *source) {
|
||||||
const char *vertex_text, int vertex_text_size, const char *pixel_header,
|
|
||||||
int pixel_header_size, const char *pixel_text, int pixel_text_size) {
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
package playstation5
|
package playstation5
|
||||||
|
|
||||||
// #include "graphics_playstation5.h"
|
// #include "graphics_playstation5.h"
|
||||||
// #include <stdlib.h>
|
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -121,14 +120,19 @@ func (g *Graphics) MaxImageSize() int {
|
|||||||
|
|
||||||
func (g *Graphics) NewShader(program *shaderir.Program) (graphicsdriver.Shader, error) {
|
func (g *Graphics) NewShader(program *shaderir.Program) (graphicsdriver.Shader, error) {
|
||||||
s := precompiledShaders[program.SourceHash]
|
s := precompiledShaders[program.SourceHash]
|
||||||
defer runtime.KeepAlive(s)
|
ps := C.ebitengine_PrecompiledShader{
|
||||||
|
vertex_header: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.vertexHeader))),
|
||||||
|
vertex_header_size: C.int(len(s.vertexHeader)),
|
||||||
|
vertex_text: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.vertexText))),
|
||||||
|
vertex_text_size: C.int(len(s.vertexText)),
|
||||||
|
pixel_header: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.pixelHeader))),
|
||||||
|
pixel_header_size: C.int(len(s.pixelHeader)),
|
||||||
|
pixel_text: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.pixelText))),
|
||||||
|
pixel_text_size: C.int(len(s.pixelText)),
|
||||||
|
}
|
||||||
|
|
||||||
var id C.int
|
var id C.int
|
||||||
if err := C.ebitengine_NewShader(&id,
|
if err := C.ebitengine_NewShader(&id, &ps); !C.ebitengine_IsErrorNil(&err) {
|
||||||
(*C.char)(unsafe.Pointer(unsafe.SliceData(s.vertexHeader))), C.int(len(s.vertexHeader)),
|
|
||||||
(*C.char)(unsafe.Pointer(unsafe.SliceData(s.vertexText))), C.int(len(s.vertexText)),
|
|
||||||
(*C.char)(unsafe.Pointer(unsafe.SliceData(s.pixelHeader))), C.int(len(s.pixelHeader)),
|
|
||||||
(*C.char)(unsafe.Pointer(unsafe.SliceData(s.pixelText))), C.int(len(s.pixelText))); !C.ebitengine_IsErrorNil(&err) {
|
|
||||||
return nil, newPlaystation5Error("(*playstation5.Graphics).NewShader", err)
|
return nil, newPlaystation5Error("(*playstation5.Graphics).NewShader", err)
|
||||||
}
|
}
|
||||||
return &Shader{
|
return &Shader{
|
||||||
|
@ -103,10 +103,20 @@ ebitengine_DrawTriangles(int dst, const int *srcs, int src_count, int shader,
|
|||||||
ebitengine_Blend blend, const uint32_t *uniforms,
|
ebitengine_Blend blend, const uint32_t *uniforms,
|
||||||
int uniform_count, int fill_rule);
|
int uniform_count, int fill_rule);
|
||||||
|
|
||||||
ebitengine_Error ebitengine_NewShader(
|
typedef struct ebitengine_PrecompiledShader {
|
||||||
int *shader, const char *vertex_header, int vertex_header_size,
|
char *vertex_header;
|
||||||
const char *vertex_text, int vertex_text_size, const char *pixel_header,
|
int vertex_header_size;
|
||||||
int pixel_header_size, const char *pixel_text, int pixel_text_size);
|
char *vertex_text;
|
||||||
|
int vertex_text_size;
|
||||||
|
char *pixel_header;
|
||||||
|
int pixel_header_size;
|
||||||
|
char *pixel_text;
|
||||||
|
int pixel_text_size;
|
||||||
|
} ebitengine_PrecompiledShader;
|
||||||
|
|
||||||
|
ebitengine_Error
|
||||||
|
ebitengine_NewShader(int *shader,
|
||||||
|
const ebitengine_PrecompiledShader *precompiled_shader);
|
||||||
void ebitengine_DisposeShader(int id);
|
void ebitengine_DisposeShader(int id);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
Reference in New Issue
Block a user