OPENGL cara menggunakan fungsi glTexImage3D

Kode berikut digunakan untuk menggambar lautan, saya mencoba mengubahnya menjadi kode c#, tetapi saya gagal karena saya tidak mengerti apa fungsi 3d, jadi saya ingin penjelasan tentang fungsi-fungsi ini (maksud saya tekstur 3d)...

int res = 64;
int nr = res / 2;
int nv = res * 2;
int nb = res / 2;
int na = 8;
f = fopen("E:\\New folder\\ConsoleApplication1\\Debug\\data\\inscatter.raw", "rb");
data = new float[nr*nv*nb*na*4];
fread(data, 1, nr*nv*nb*na*4*sizeof(float), f);
fclose(f);
glActiveTexture(GL_TEXTURE0 + INSCATTER_UNIT);
glGenTextures(1, &inscatterTex);
glBindTexture(GL_TEXTURE_3D, inscatterTex);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA16F_ARB, na*nb, nv, nr, 0, GL_RGBA, GL_FLOAT, data);
delete[] data;

person Tarek    schedule 14.05.2013    source sumber


Jawaban (1)


Tekstur 3D adalah gambar volumetrik, yaitu semacam kubus yang diisi dengan voxel warna. Jadi, alih-alih gambar width × height · color_channels, Anda punya gambar width × height × depth · color_channels.

Ini adalah animasi yang menampilkan gambar volumetrik (atas izin kelompok kerja penelitian tempat saya menjadi anggotanya): http://www.bmo.physik.uni-muenchen.de/~z19/OCTanimation.gif (sayangnya StackOverflow tidak mengizinkan penautan GIF animasi).

Aku melihat itu. yang lain tentang rendering laut di postingan lain. Mohon diperhatikan bahwa ini adalah subjek yang sangat tidak sepele yang memerlukan beberapa algoritma yang sangat canggih. Penggunaan tekstur 3D yang disebut "inscatter" menunjukkan bahwa kode apa pun yang Anda cari mengimplementasikan salah satu model kompleks tersebut, di mana tekstur 3D digunakan sebagai tabel pencarian istilah hamburan.

Perhatikan bahwa tanpa pemahaman yang kuat tentang OpenGL dan metode numerik, penerapan penyaji lautan hampir mustahil untuk dilakukan. Saya akan mulai dengan memahami dasar-dasarnya terlebih dahulu.

person datenwolf    schedule 14.05.2013