은 (옆으로 죄송합니다)를 Xoom에Open GL Es 2.0 질감 점, XOOM의 코드 작동, Nexus S에서 깨짐, 어떤 생각?
그리고 무엇 순간에서 Nexus S
내 추측에 보이는 작업의 총에 내가 필요로 뭔가를 가능하게 아니에요이다 nexus에서 활성화 될 수 있지만 xoom에서는 필요하지 않습니다 (또는 tegra OpenGL 드라이버에서 자동으로 활성화 됨). 분명히 TEXTURE_2D 또는 GL_BLEND가 아니라고 말할 수 있습니다. 다른 점이 있을지 모르겠습니다.
또한 관련성이있는 경우 해당 스프라이트에 대해 깊이 테스트를 사용하지 않도록 설정하고 있습니다.
관련 코드는 최선을 다합니다.
버텍스 쉐이더
precision highp float;
attribute vec4 aPosition;
uniform mat4 uProjection;
uniform mat4 uView;
void main() {
gl_Position = uView*aPosition*uProjection;
gl_PointSize = 100.0;
}
조각 쉐이더
precision mediump float;
uniform sampler2D sTexture;
void main() {
gl_FragColor = texture2D(sTexture, gl_PointCoord);
}
포인트 스프라이트 (분명히 형상이 정결입니다)
mProgram.LoadProgram (GLES20.glEnable(GLES20.GL_TEXTURE_2D);
GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glDisable(GLES20.GL_DEPTH_TEST);
Matrix.setIdentityM(model, 0);
mProgram.LoadProgram();
GLES20.glEnableVertexAttribArray(mProgram.getHandle("aPosition"));
GLES20.glVertexAttribPointer(mProgram.getHandle("aPosition"), 3, GLES20.GL_FLOAT, false, 0, mPoints);
GLES20.glUniformMatrix4fv(mProgram.getHandle("uView"), 1, false, App.getInstance().currentGameState.mCamera.view, 0);
TextureManager.loadTexture(mTexture, 0);
GLES20.glDrawArrays(GLES20.GL_POINTS, 0, (int) currentMarkers);
Es2Utils.checkGlError("Error With renderMarkers");
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glDisable(GLES20.GL_BLEND);
)가 있습니다에 대한 일상적인 렌더링 내 쉐이더 용 래퍼,이 경우 5 개의 다른 셰이더처럼 사용되지만 실제로는 문제가되지 않습니다. 그것은 또한 이것을한다.
if (programID != 0) {
GLES20.glUseProgram(programID);
}
Es2Utils.checkGlError("1");
if (Es2Utils.checkGlError("GLES20.glUseProgram();") || programID == 0) {
CompileProgram();
GLES20.glUseProgram(programID);
}
Es2Utils.checkGlError("2");
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
Es2Utils.checkGlError("3");
GLES20.glUniformMatrix4fv(getHandle("uProjection"), 1, false, Projections.getPerspective(), 0);
Es2Utils.checkGlError("4");
길이가 길지만 Nexus S 지원 포인트 크기의 스프라이트가 있습니까? 'gl_PointSize'를 ~ 32.0으로 설정하십시오. – arul
20.0으로 설정했지만 여전히 넥서스에 검은 색 상자가 있습니다. 필자는 포인트 스프 라이트가 실제로 일부 장치에서는이 제한 사항을 가지고 있었지만 여전히 2.0에서 적용된다는 점을 기억합니까? 나는 잘 모르겠다. – HaMMeReD
PowerVR SGX 540 (넥서스 S)의 최대 포인트 크기는 512 IIRC입니다. 그러나 요컨데, 포인트 크기가 너무 크면 필자가 보았던 모든 구현은 클램프하고 렌더링을 계속합니다. –