2014-10-17 1 views
0

I 설정 내 텍스처 매개 변수 : 텍스처에 대한OpenGL에서 텍스처의 모든 색상의 평균을 구하고 있습니까? 이 같은 OpenGL을에서

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);` 

//glGenerateMipmap(GL_TEXTURE_2D); 
glActiveTexture(GL_TEXTURE0); 

내 데이터는 이것이다 :

checker[0] = checker[1] = checker[2] = 255; 
checker[3] = checker[4] = checker[5] = 0; 
checker[6] = checker[7] = checker[8] = 255; 
checker[9] = checker[10] = checker[11] = 0; 

내 텍스처 GL_RGB에 있으며 GL_UNSIGNED_BYTE 걸립니다. 텍스처의 너비와 높이를 2로 설정하고 텍스처를 배치 할 좌표를 사각형으로 만들고 전체 화면을 채우는 두 개의 삼각형으로 구성합니다.

그러나 두 개의 검정색과 두 개의 흰색 픽셀 대신 회색 색상이 표시됩니다. 그레이 색상은 128,127,127 (RGB)입니다. 나는 모든 색상에 대해 검사기에 1 바이트의 패딩을 추가해야한다는 것을 알았지 만 복숭아 색을주었습니다.

편집 :

버그가 발견되었지만 흰색 화면이 나타납니다.

그래서 나는
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 

을 제거하고 지금은 검은 화면을 얻을.

이 내 그리기 기능입니다 : 당신의 텍스처에서 오는 좌표 어디 언급하지 않는

glUseProgram(gfx->shaderProgramTexture); 

glBindTexture(GL_TEXTURE_2D, tex); 

glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 
    2, 2, GL_RGB, GL_UNSIGNED_BYTE, data); 

glBindBuffer(GL_ARRAY_BUFFER, 
    gfx->vertexBufferTexture); 

glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); 
gfx->clearScreen(); 
glDrawArrays(GL_TRIANGLES, 0, 6); 
glBindTexture(GL_TEXTURE_2D, 0); 
glfwSwapBuffers(gfx->getWindow()); 
+1

매개 변수를 설정할 때 텍스처가 바인딩되어 있습니까? 이것을 디버그하려면 더 많은 코드가 필요합니다. –

+0

@ColonelThirtyTwo done – user2893243

+0

무엇을'GL_UNPACK_ALIGNMENT'에 설정 했습니까? – genpfault

답변

-1

. 잘못된 텍스쳐 좌표를 사용하면, 예를 들어 항상 같은 픽셀을 샘플링하는 경우와 같이 완전히 흰색이거나 완전히 검은 색으로 렌더링 될 수 있습니다. 텍스처 좌표가 정확하게 픽셀 사이에 있으면 GL_NEAREST없이 회색을 얻을 수 있습니다.

+0

아니요, 사용하는 텍스처 좌표에 관계없이'GL_NEAREST' 필터를 사용할 때 텍셀 사이에 어떤 혼합도 생기지 않습니다. – derhass

+0

그래서 내가 "GL_NEAREST없이 회색을 얻을 수도있다"고 말하면서 "없이"라는 단어를 적어 두었습니다. – Oogst

+0

죄송합니다. 나는 그것을 놓쳤습니다. 내가 downvote하지 않았다는 것을 유의하십시오. – derhass

관련 문제