colors = surface->format->BytesPerPixel;
if (colors == 4) { // alpha
if (surface->format->Rmask == 0x000000ff)
texture_format = GL_RGBA;
else
texture_format = GL_BGRA;
} else { // no alpha
if (surface->format->Rmask == 0x000000ff)
format = GL_RGB;
else
format = GL_BGR;
}
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, colors, surface->w, surface->h, 0,
texture_format, GL_UNSIGNED_BYTE, surface->pixels);
StackOverflowで見つけたコードをValaに変換しようとしています。ただし、glGenTexturesで問題が発生しています。
最初の部分は単純でした:
int texture_format;
uchar colors = screen.format.BytesPerPixel;
if (colors == 4) {
if (screen.format.Rmask == 0x000000ff) {
texture_format = GL_RGBA;
} else {
texture_format = GL_BGRA;
}
} else {
if (screen.format.Rmask == 0x000000ff) {
texture_format = GL_RGB;
} else {
texture_format = GL_BGR;
}
}
ただし、これは変換方法がわかりません。glGenTextures(1、&texture);
私は試した:
GL.GLuint[] texture = {};
glGenTextures (1, texture);
私が得た:
.vala:46.27-46.33: error: Argument 2: Cannot pass value to reference or output parameter
私も試しました:
GL.GLuint[] texture = {};
glGenTextures (1, out texture);
私が得た:
ERROR:valaccodearraymodule.c:1183:vala_ccode_array_module_real_get_array_length_cvalue: assertion failed: (_tmp48_)
私は試した:
glGenTextures (1, &texture);
私が得た:
.vala:46.27-46.34: error: Argument 2: Cannot pass value to reference or output parameter
他にも似たようなことをいろいろ試しましたが、何かアイデアはありますか?