JOGL로 애니메이션을 만들고 있습니다. 몇 가지 요소를 그려야하지만 그 중 일부는 항상 같은 속성을 가진 동일한 요소이며 그 영역에서 다른 객체가 이동하지 않습니다. 이것이 내가 glScissor를 구현하는 이유입니다. 그래서 내 생각은 : 나는 부울 변수를 true로 선언하고 첫 번째 프레임에 대해서만 true 인 if 문을 수행합니다. if 문 안에서 필자는 상수로 필요한 것을 모두 칠하는 함수를 호출 한 다음 glScissors를 활성화합니다. 문제는 가위가있는 영역에서만 이미지가 변경되는 것을 볼 수 있지만 외부 영역에서는 깜박임을 볼 수 있다는 것입니다. 올바른 이미지로 다른 사람들과 검은 색 프레임이있는 것과 같습니다. 왜? 내가 도대체 뭘 잘못하고있는 겁니까?)glScissors는 애니메이션 (JOGL)을 사용하여 깜박입니다.
A)()
또는
나 초기화에) glDrawBuffer (GL_FRONT_AND_BACK 쓰기 백 버퍼를 전면 버퍼를 복사
boolean first = true;
public void init(GLAutoDrawable drawable) {
final GL2 gl = (GL2) drawable.getGL();
// Enable z- (depth) buffer for hidden surface removal.
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glDepthFunc(GL.GL_LEQUAL);
// Enable smooth shading.
gl.glShadeModel(GL2.GL_SMOOTH);
// Define "clear" color.
gl.glClearColor(1f, 1f, 1f, 1f);
// We want a nice perspective.
gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
// Create GLU.
glu = new GLU();
GLProfile profile = GLProfile.get(GLProfile.GL2);
gl.glPixelStorei(gl.GL_PACK_ALIGNMENT, 1);
}
public void display(GLAutoDrawable drawable) {
final GL2 gl = (GL2) drawable.getGL();
// Clear screen.
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Set camera.
setCamera(gl, glu, 30);
// Prepare light parameters.
float SHINE_ALL_DIRECTIONS = 1;
float[] lightPos = {0, 0, 0, SHINE_ALL_DIRECTIONS};
float[] lightColorAmbient = {1f, 1f, 1f, 1f};
float[] lightColorSpecular = {1f, 1f, 1f, 1f};
// Set light parameters.
gl.glLightfv(GL2.GL_LIGHT1, GL2.GL_POSITION, lightPos, 0);
gl.glLightfv(GL2.GL_LIGHT1, GL2.GL_AMBIENT, lightColorAmbient, 0);
gl.glLightfv(GL2.GL_LIGHT1, GL2.GL_SPECULAR, lightColorSpecular, 0);
// Enable lighting in GL.
gl.glEnable(GL2.GL_LIGHT1);
gl.glEnable(GL2.GL_LIGHTING);
if (first==true){
first=false;
//inside plot_constant_object I don't change anything related with lighting
Plot_constant_objects(drawable, gl);
gl.glScissor(100, 100, 500, 500);
gl.glEnable(gl.GL_SCISSOR_TEST);
}
//Draw other stuff
}
당신은 사용 [사용되지 OpenGL은] (https://www.khronos.org/opengl/wiki/Legacy_OpenGL) 내가 당신을 조언 – elect
작업을보고 안 여기에있는 예 : http://www.java-gaming.org/index.php/topic,13652. 그건 그렇고, "glu = new GLU()"를 "glu = GLU.createGLU (gl)"로 바꾸십시오. – gouessej
차이점은 무엇입니까? 둘 다 나를 위해 일했다. 해당 페이지에 대해 작동하지 않았습니다! 바라기를 나는 해결책을 찾아 냈다 :) –