2011-10-17 2 views
1
glColor4f(0.0, 1.0, 0.0, 0.8); 
glLineWidth(100.0); 
ccDrawCircle(ccp(240,160), 70, 0, 360, NO); 

어떤 이유로 든 원의 선이 확실히 그려지는 선의 너비가 100입니다. 이 코드는 draw 메소드와 모두 안에 있습니다. 어떤 아이디어?glLineWidth가 적용되지 않습니까?

+0

OpenGLES1.x 기기 (iPhone, iPhone 3G, 1st 및 2nd gen iPod)에서 테스트 중입니까? 내 경험상, OpenGLES 2.0보다 높은 값은 지원됩니다. –

답변

2

두 가지 생각 : 먼저 크기가 가능한 값보다 커질 수 있습니다. 오픈 GL ES 구현은 실제로 1의 값만 지원해야한다는 것을 상기 한 것을 기억하는 것 같습니다. iPhone이 1 이외의 값을 지원할 수 있다고 생각하지만 100은 범위를 벗어날 수 있습니다.

glLineSmooth가 활성화되어 있는지 확인하고 활성화되어 있지 않은지 확인하고 싶을 수도 있습니다. 그러나 나는 그것이 이것이 문제라고 생각하지 않는다.

4

범위 장치가 라인 폭에 대해 지원하는 것을보고보십시오 :

에만 1.0 보장
GLint range[2]; 
glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range); 
glGetIntegerv(GL_SMOOTH_LINE_WIDTH_RANGE, range); 

이 지원 될,하지만 난 아이폰뿐만 아니라 적어도 2.0을 지원하는지 알고있다 (나는 잘 알고 2.0을 사용하여 선으로 그려진 서클을 렌더링하는 알려진 게임).

+0

이 '범위'는 [0] = max, [1] = min으로 저장됩니까? 나는 이것을했다 : GLint smoothRange [2]; glGetIntegerv (GL_SMOOTH_LINE_WIDTH_RANGE, smoothRange); cout << "GL_SMOOTH_LINE_WIDTH_RANGE :"<< smoothRange [0] << ""<< smoothWidthRange [1]; GLint aliased [2]; glGetIntegerv (GL_ALIASED_LINE_WIDTH_RANGE, 별칭); cout << "GL_ALIASED_LINE_WIDTH_RANGE :"<< 앨리어스 [0] << ""<< 앨리어스 [1]; GL_SMOOTH_LINE_WIDTH_RANGE : 1 0 GL_ALIASED_LINE_WIDTH_RANGE : 4226400 0 확실히 선 너비를 1로 설정할 수는 있지만 대략 10 배 정도 커지는 것 같습니다. –

+0

허,이 일이 벌어지고있는 장치는 무엇입니까? 라인 매개 변수에 대해'glGetIntegerv'를 완벽하게 지원하지 못하는 고장난 드라이버처럼 들립니다. 온전한 테스트로서'smoothRange'와'aliased' 배열을 알고있는 어떤 것으로 설정해야합니다 (예를 들어'0xdeadbabe').'glGetIntegerv'가 여러분의 배열을 수정하는 지 확인하십시오. 어쩌면 그렇지 않을 수도 있습니다. 어떤 경우에는 깨 졌거나 지원되지 않는/etc입니다. –

+0

그것은 Quadro NVS 420입니다. 아, 맞습니다. 배열은 glGetIntegerv 호출에 의해 전혀 수정되지 않습니다. 내가 큰 선 너비를 설정하려고하는데 이것을 확인하려고하는 유일한 이유는 약 10 정도로 클램프하는 것 같습니다. 그 한계가 실제로 어디에서 왔는지보고 싶었습니다. –

관련 문제