안드로이드 오픈지엘 질문드립니다.
글쓴이: lalupo20 / 작성시간: 금, 2021/02/05 - 8:47오후
glReadPixels 함수 문제인지
색상값을 표현하는 glColor4f 함수 문제인지
glReadPixel 함수로 픽셀값을 읽어왔을시 정확한 값이 들어오지 않습니다.
void GLObjectManager::push_back(GLObject* obj) { lock_guard<std::mutex> lock(_mutex); obj->setIndex(numOfObject); GLfloat green = numOfObject * 50; GLfloat fcolor[4] = { 0.0f, green / 255.0f, 0.0f, 1.0f }; obj->setFakeColors(fcolor, 4); objList.push_back(obj); numOfObject++; }
색상값을 입력 하는 부분이고
void GLObject::drawFake() { glPushMatrix(); if (_isVisible) { glShadeModel(GL_FLAT); glEnableClientState(GL_VERTEX_ARRAY); glColor4f(fakeColors[0], fakeColors[1], fakeColors[2], fakeColors[3]); // glColor4ub(fakeColors[0], fakeColors[1], fakeColors[2], fakeColors[3]); if (vertex != NULL) glVertexPointer(3, GL_FLOAT, 0, vertex); glEnableClientState(GL_NORMAL_ARRAY); if (normal != NULL) glNormalPointer(GL_FLOAT, 0, normal); motion(); if (indices != NULL) glDrawElements(GL_TRIANGLE_STRIP, indiceLength, GL_UNSIGNED_SHORT, indices); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); } glPopMatrix(); }
드로잉하는 부분입니다.
int x = engine->state.x[pointerIndex]; int y = screenManager->scrHeight - engine->state.y[pointerIndex]; glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
그리고 픽셀값을 읽어들이는 부분 입니다.
세개의 도형을 그리는데, 픽셀값이 (0, 0, 0, 255), (0, 50, 0, 255), (0, 100, 0, 255)가 리턴되어야 하는데
(0, 0, 0, 255), (0, 50, 0, 255), (0, 99, 0, 255)가 들어옵니다.
색상값 출력하는 부분이 문제인지 픽셀값 읽어들이는 부분이 문제인지 모르겠네요.
이런 경우는 어떻게 해결해야 할까요?
Forums:
터치 안되는 문제는 해결했습니다.
항상 정수값으로 1씩 차이나길래
pixels[1] - 1.0 / 255.0f <= x <= pixels[1] + 1.0f / 255.0f
대충 이런식으로 조건문으로 처리했습니다.
제대로된 값을 읽어들이지 못하는 문제는 해결하지 못했네요...
댓글 달기