Сгенерированная процедурно текстура выглядит нормально, пока я не начну пытаться прокручивать координаты текстуры, используя GL_REPEAT. Если я прокручиваю только нормальное изображение, которое я загрузил, то оно прокручивается нормально. Но процедурный делает этот странный, периодический проблесковый эффект. Я пытаюсь создать звездное поле, так что это просто белые точки на прозрачном фоне, и с этой проблемой звезды становятся почти черными, затем снова белыми и так далее. Кроме того, если я генерирую значительное количество звезд, есть несколько, которые не проявляют такого поведения, но кажутся нормальными.
здесь я просто настраиваю текстуру для opengl и устанавливаю массив пикселей.
glBindTexture(GL_TEXTURE_2D,tex_id);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
GLubyte *pixels=new GLubyte[(screen_width)*(screen_height)*4];
здесь я настраиваю свои генераторы случайных чисел и заполняю данные пикселей для количества звезд, которые я хочу.
irngX=new IRNG(0,screen_width-1);
irngY=new IRNG(0,screen_height-1);
for (int i=0; i<count; ++i){
int x=irngX->get();
int y=irngY->get();
int pos=(y*screen_width*4)+(x*4);
pixels[pos++]=(GLubyte)255;
pixels[pos++]=(GLubyte)255;
pixels[pos++]=(GLubyte)255;
pixels[pos++]=(GLubyte)255;
}
здесь я загружаю пиксели в opengl ... кажется, что функция хранилища пикселей ни на что не влияет, в отличие от настольного opengl, и в любом случае я не понимаю ее использования. Я попробовал это и выключать.
glPixelStorei(GL_UNPACK_ALIGNMENT,1); // ??
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,screen_width,screen_height,0,
GL_RGBA,GL_UNSIGNED_BYTE,pixels);
glPixelStorei(GL_UNPACK_ALIGNMENT,4);
вот мой текстовый скроллер координат:
tex_scroller+=0.001f;
glUniform1f(tex_scroller_loc,tex_scroller);
и в шейдере:
vtex.t+=tex_scroller;
я надеюсь, что это весь соответствующий код, и что я 'Мы сделали мою проблему понятной. пожалуйста, дайте мне знать, если вам нужно лучшее описание. ps я извиняюсь, если мой код не отформатирован должным образом. я пытался.