我将 Derelict 用于我的 OpenGL 工作,并且我厌倦了一直使用cast(GLvoid*) Vec3.sizeof
glVertexAttribPointer 之类的函数。所以我想我会做一个功能,glsizeof
import std.stdio;
alias void GLvoid;
struct Vec3 {
float x, y, z;
}
GLvoid* glsizeof(T)(T t) {
return cast(GLvoid*) t.sizeof;
}
void main() {
Vec3 vec = { x: 2.5, y: 4.8, z: 3.2 };
writeln(cast(GLvoid*) vec.sizeof); // prints 'C'
writeln(cast(GLvoid*) Vec3.sizeof); // prints 'C'
writeln(cast(GLvoid*) int.sizeof); // prints '4'
// Now to try using glsizeof :)
GLvoid* size_vec = vec.glsizeof; // call glsizeof using a uniform function call
GLvoid* size_vec3 = Vec3.glsizeof;
GLvoid* size_int = int.glsizeof;
writeln(size_vec); // should print 'C'
writeln(size_vec3); // should print 'C'
writeln(size_int); // should print '4'
}
我收到此错误:
test.d(25): Error: no property 'glsizeof' for type 'Vec3'
test.d(26): Error: no property 'glsizeof' for type 'int'
有没有办法向类型添加属性?或者我可以用另一种方式做到这一点,例如使用别名?或者我想做的事情是不可能的?
这是DPaste 上的代码。
编辑:在我的预期输出中添加了更多细节。