我在 OpenGL ES 上苦苦挣扎。效果不佳。我在 C 中得到了类似的东西。(我只是复制了 Go 代码并修改了(语法)并删除了(非重要的函数调用)C 的一些东西。)
我终于发现 Go 数组没有传递给 C 函数。(所以,数组作为顶点数组,索引不能很好地传递并且在我渲染时做错了。)
我用这段代码测试过:
C函数部分:
void passTest(void *Ptr){
int *test = (GLfloat *)Ptr;
printf("C: test=%p\n", test);
printf("C: test[0]=%d\ntest[1]=%d\ntest[2]=%d\ntest[3]=%d\n", test[0], test[1], test[2], test[3]);
}
这是 Go 部分:
test := []int{ 0, 3, 9, 81018 }
var ptr unsafe.Pointer = (unsafe.Pointer)(&test)
fmt.Printf("Go: test=%p\n", ptr)
fmt.Printf("Go: test[0]=%d\ntest[1]=%d\ntest[2]=%d\ntest[3]=%d\n", test[0], test[1], test[2], test[3])
C.passTest(ptr)
结果是:
Go: test=0x10300010
Go: test[0]=0
test[1]=3
test[2]=9
test[3]=81018
C: test=0x10300010
C: test[0]=271581216
test[1]=4
test[2]=4
test[3]=0
如您所见,指针值传递良好。但是,打印值是错误的。我在将数组传递给 C 时做错了什么吗?
慕的地6264312
相关分类