1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

cgen: do full struct initialisation for V structs, fixes invalid data from map[string]Struct{}['unknown'] (#9878)

This commit is contained in:
Don Park
2021-04-26 23:18:48 -06:00
committed by GitHub
parent 787a63dab6
commit aebb551e93
16 changed files with 107 additions and 99 deletions

View File

@@ -293,7 +293,7 @@ fn init_cube_glsl(mut app App) {
Vertex_t{ 1.0, 1.0, -1.0, c, 0, d},
]
mut vert_buffer_desc := C.sg_buffer_desc{}
mut vert_buffer_desc := C.sg_buffer_desc{label: c'cube-vertices'}
unsafe { C.memset(&vert_buffer_desc, 0, sizeof(vert_buffer_desc)) }
vert_buffer_desc.size = size_t(vertices.len * int(sizeof(Vertex_t)))
@@ -304,7 +304,6 @@ fn init_cube_glsl(mut app App) {
vert_buffer_desc.@type = .vertexbuffer
// vert_buffer_desc.usage = .immutable
vert_buffer_desc.label = 'cube-vertices'.str
vbuf := gfx.make_buffer(&vert_buffer_desc)
/* create an index buffer for the cube */
@@ -317,7 +316,7 @@ fn init_cube_glsl(mut app App) {
22, 21, 20, 23, 22, 20
]
mut index_buffer_desc := C.sg_buffer_desc{}
mut index_buffer_desc := C.sg_buffer_desc{label: c'cube-indices'}
unsafe { C.memset(&index_buffer_desc, 0, sizeof(index_buffer_desc)) }
index_buffer_desc.size = size_t(indices.len * int(sizeof(u16)))
@@ -327,7 +326,6 @@ fn init_cube_glsl(mut app App) {
}
index_buffer_desc.@type = .indexbuffer
index_buffer_desc.label = 'cube-indices'.str
ibuf := gfx.make_buffer(&index_buffer_desc)
// create shader

View File

@@ -172,7 +172,7 @@ fn init_cube_glsl(mut app App) {
Vertex_t{ 1.0, 1.0, -1.0, c, 0, d},
]
mut vert_buffer_desc := C.sg_buffer_desc{}
mut vert_buffer_desc := C.sg_buffer_desc{label: c'cube-vertices'}
unsafe { C.memset(&vert_buffer_desc, 0, sizeof(vert_buffer_desc)) }
vert_buffer_desc.size = size_t(vertices.len * int(sizeof(Vertex_t)))
@@ -182,7 +182,6 @@ fn init_cube_glsl(mut app App) {
}
vert_buffer_desc.@type = .vertexbuffer
vert_buffer_desc.label = 'cube-vertices'.str
vbuf := gfx.make_buffer(&vert_buffer_desc)
// create an index buffer for the cube
@@ -195,7 +194,7 @@ fn init_cube_glsl(mut app App) {
22, 21, 20, 23, 22, 20,
]
mut index_buffer_desc := C.sg_buffer_desc{}
mut index_buffer_desc := C.sg_buffer_desc{label: c'cube-indices'}
unsafe {C.memset(&index_buffer_desc, 0, sizeof(index_buffer_desc))}
index_buffer_desc.size = size_t(indices.len * int(sizeof(u16)))
@@ -205,7 +204,6 @@ fn init_cube_glsl(mut app App) {
}
index_buffer_desc.@type = .indexbuffer
index_buffer_desc.label = "cube-indices".str
ibuf := gfx.make_buffer(&index_buffer_desc)
// create shader

View File

@@ -176,7 +176,7 @@ fn init_cube_glsl_m(mut app App) {
Vertex_t{ 1.0, 1.0, -1.0, c, 0, d},
]
mut vert_buffer_desc := C.sg_buffer_desc{}
mut vert_buffer_desc := C.sg_buffer_desc{label: c'cube-vertices'}
unsafe { C.memset(&vert_buffer_desc, 0, sizeof(vert_buffer_desc)) }
vert_buffer_desc.size = size_t(vertices.len * int(sizeof(Vertex_t)))
vert_buffer_desc.data = C.sg_range{
@@ -184,7 +184,6 @@ fn init_cube_glsl_m(mut app App) {
size: size_t(vertices.len * int(sizeof(Vertex_t)))
}
vert_buffer_desc.@type = .vertexbuffer
vert_buffer_desc.label = 'cube-vertices'.str
vbuf := gfx.make_buffer(&vert_buffer_desc)
/* create an index buffer for the cube */
@@ -199,7 +198,7 @@ fn init_cube_glsl_m(mut app App) {
*/
]
mut index_buffer_desc := C.sg_buffer_desc{}
mut index_buffer_desc := C.sg_buffer_desc{label: c'cube-indices'}
unsafe { C.memset(&index_buffer_desc, 0, sizeof(index_buffer_desc)) }
index_buffer_desc.size = size_t(indices.len * int(sizeof(u16)))
index_buffer_desc.data = C.sg_range{
@@ -207,7 +206,6 @@ fn init_cube_glsl_m(mut app App) {
size: size_t(indices.len * int(sizeof(u16)))
}
index_buffer_desc.@type = .indexbuffer
index_buffer_desc.label = 'cube-indices'.str
ibuf := gfx.make_buffer(&index_buffer_desc)
// create shader
@@ -284,7 +282,7 @@ fn init_cube_glsl_p(mut app App) {
Vertex_t{ 1.0, 1.0, -1.0, c, 0, d},
]
mut vert_buffer_desc := C.sg_buffer_desc{}
mut vert_buffer_desc := C.sg_buffer_desc{label: c'cube-vertices'}
unsafe { C.memset(&vert_buffer_desc, 0, sizeof(vert_buffer_desc)) }
vert_buffer_desc.size = size_t(vertices.len * int(sizeof(Vertex_t)))
vert_buffer_desc.data = C.sg_range{
@@ -292,7 +290,6 @@ fn init_cube_glsl_p(mut app App) {
size: size_t(vertices.len * int(sizeof(Vertex_t)))
}
vert_buffer_desc.@type = .vertexbuffer
vert_buffer_desc.label = 'cube-vertices'.str
vbuf := gfx.make_buffer(&vert_buffer_desc)
/* create an index buffer for the cube */
@@ -308,7 +305,7 @@ fn init_cube_glsl_p(mut app App) {
]
mut index_buffer_desc := C.sg_buffer_desc{}
mut index_buffer_desc := C.sg_buffer_desc{label: c'cube-indices'}
unsafe { C.memset(&index_buffer_desc, 0, sizeof(index_buffer_desc)) }
index_buffer_desc.size = size_t(indices.len * int(sizeof(u16)))
index_buffer_desc.data = C.sg_range{
@@ -316,7 +313,6 @@ fn init_cube_glsl_p(mut app App) {
size: size_t(indices.len * int(sizeof(u16)))
}
index_buffer_desc.@type = .indexbuffer
index_buffer_desc.label = 'cube-indices'.str
ibuf := gfx.make_buffer(&index_buffer_desc)
// create shader

View File

@@ -189,7 +189,7 @@ fn init_cube_glsl_i(mut app App) {
Vertex_t{ 1.0, 1.0, -1.0, c, 0, d},
]
mut vert_buffer_desc := C.sg_buffer_desc{}
mut vert_buffer_desc := C.sg_buffer_desc{label: c'cube-vertices'}
unsafe {C.memset(&vert_buffer_desc, 0, sizeof(vert_buffer_desc))}
vert_buffer_desc.size = size_t(vertices.len * int(sizeof(Vertex_t)))
vert_buffer_desc.data = C.sg_range{
@@ -197,17 +197,15 @@ fn init_cube_glsl_i(mut app App) {
size: size_t(vertices.len * int(sizeof(Vertex_t)))
}
vert_buffer_desc.@type = .vertexbuffer
vert_buffer_desc.label = "cube-vertices".str
vbuf := gfx.make_buffer(&vert_buffer_desc)
/* create an instance buffer for the cube */
mut inst_buffer_desc := C.sg_buffer_desc{}
mut inst_buffer_desc := C.sg_buffer_desc{label: c'instance-data'}
unsafe {C.memset(&inst_buffer_desc, 0, sizeof(inst_buffer_desc))}
inst_buffer_desc.size = size_t(num_inst * int(sizeof(m4.Vec4)))
inst_buffer_desc.@type = .vertexbuffer
inst_buffer_desc.usage = .stream
inst_buffer_desc.label = "instance-data".str
inst_buf := gfx.make_buffer(&inst_buffer_desc)
@@ -221,7 +219,7 @@ fn init_cube_glsl_i(mut app App) {
22, 21, 20, 23, 22, 20
]
mut index_buffer_desc := C.sg_buffer_desc{}
mut index_buffer_desc := C.sg_buffer_desc{label: c'cube-indices'}
unsafe {C.memset(&index_buffer_desc, 0, sizeof(index_buffer_desc))}
index_buffer_desc.size = size_t(indices.len * int(sizeof(u16)))
index_buffer_desc.data = C.sg_range{
@@ -229,7 +227,6 @@ fn init_cube_glsl_i(mut app App) {
size: size_t(indices.len * int(sizeof(u16)))
}
index_buffer_desc.@type = .indexbuffer
index_buffer_desc.label = "cube-indices".str
ibuf := gfx.make_buffer(&index_buffer_desc)
/* create shader */

View File

@@ -1,3 +1,5 @@
module obj
/**********************************************************************
*
* .obj loader
@@ -8,8 +10,6 @@
*
* TODO:
**********************************************************************/
module obj
import gg.m4
import strconv

View File

@@ -68,7 +68,9 @@ pub fn (mut obj_part ObjPart) create_pipeline(in_part []int, shader C.sg_shader,
res.material = obj_part.part[in_part[0]].material
// vertex buffer
mut vert_buffer_desc := C.sg_buffer_desc{}
mut vert_buffer_desc := C.sg_buffer_desc{
label: 0
}
unsafe { C.memset(&vert_buffer_desc, 0, sizeof(vert_buffer_desc)) }
vert_buffer_desc.size = size_t(obj_buf.vbuf.len * int(sizeof(Vertex_pnct)))
@@ -82,7 +84,9 @@ pub fn (mut obj_part ObjPart) create_pipeline(in_part []int, shader C.sg_shader,
vbuf := gfx.make_buffer(&vert_buffer_desc)
// index buffer
mut index_buffer_desc := C.sg_buffer_desc{}
mut index_buffer_desc := C.sg_buffer_desc{
label: 0
}
unsafe { C.memset(&index_buffer_desc, 0, sizeof(index_buffer_desc)) }
index_buffer_desc.size = size_t(obj_buf.ibuf.len * int(sizeof(u32)))

View File

@@ -86,10 +86,10 @@ pub mut:
ka m4.Vec4 = m4.Vec4{
e: [f32(0.1), 0.0, 0.0, 1.0]!
}
kd m4.Vec4 = m4.Vec4{
kd m4.Vec4 = m4.Vec4{
e: [f32(0.5), 0.5, 0.5, 1.0]!
}
ks m4.Vec4 = m4.Vec4{
ks m4.Vec4 = m4.Vec4{
e: [f32(1.0), 1.0, 1.0, 1.0]!
}
}

View File

@@ -14,9 +14,9 @@ pub fn read_lines_from_file(file_path string) []string {
}
rows = bts.bytestr().split_into_lines()
} $else {
path = 'assets/models/' + file_path
path = os.resource_abs_path('assets/models/' + file_path)
rows = os.read_lines(path) or {
eprintln('File [$path] NOT FOUND!')
eprintln('File [$path] NOT FOUND! file_path: $file_path')
return rows
}
}
@@ -34,7 +34,7 @@ pub fn read_bytes_from_file(file_path string) []byte {
exit(0)
}
} $else {
path = 'assets/models/' + file_path
path = os.resource_abs_path('assets/models/' + file_path)
buffer = os.read_bytes(path) or {
eprintln('Texure file: [$path] NOT FOUND!')
exit(0)