Я пытаюсь создать карту нормалей в opengl, которую я могу загрузить в шейдер и динамически изменять, хотя в настоящее время я застрял в том, как создать текстуру.
У меня сейчас есть это:
glActiveTexture(GL_TEXTURE7);
glGenTextures(1, &normals);
glBindTexture(GL_TEXTURE_2D, normals);
texels = new Vector3f*[256];
for(int i = 0; i < 256; ++i){
texels[i] = new Vector3f[256];
}
this->setup_normals();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0, GL_RGB, GL_FLOAT, texels);
...
void setup_normals(){
for(int i = 0; i < 256; ++i){
for(int j = 0; j < 256; ++j){
texels[i][j][0] = 0.0f;
texels[i][j][1] = 1.0f;
texels[i][j][2] = 0.0f;
}
}
}
где Vector3f: typedef float Vector3f [3];
и тексели: Vector3f ** тексели;
Когда я рисую эту текстуру в экранном квадрате, используя ортогональную матрицу (которая работает для загруженных текстур), я получаю .
Я не уверен, почему он не выглядит полностью зеленым, а также то, что заставляет черные полосы появляться внутри него. Любая помощь приветствуется.