2017-05-13 1 views
0

저는 LWJGL 3.1.1 (릴리스)으로 일부 OpenGL 프로젝트를 테스트했습니다. NVIDIA FXAA가 NVIDIA 제어판 픽셀에서 완벽하게 작동 할 때 이상한 점을 발견했습니다. edge artifacts. 내 프로그램에서이 문제를 방지하거나 FXAA를 수동으로 비활성화 할 수있는 방법이 있습니까?NVIDIA FXAA 앤티 앨리어싱을 사용하는 OpenGL 에지 인공물

import org.lwjgl.opengl.*; 
import static org.lwjgl.glfw.GLFW.*; 
import static org.lwjgl.opengl.GL11.*; 
import static org.lwjgl.system.MemoryUtil.NULL; 

public class Test 
{ 
    private static long windowID; 
    private static boolean running; 
    int width = 640, height = 480; 

    public Test() 
    { 
     if (!glfwInit()) 
     { 
      System.err.println("Error starting GLFW"); 
      System.exit(1); 
     } 

     windowID = glfwCreateWindow(width, height, "Window", NULL, NULL); 

     glfwSetFramebufferSizeCallback(windowID, (window, width, height)->{ 
      this.width = width; 
      this.height = height; 
     }); 

     if (windowID == NULL) 
     { 
      System.err.println("Error creating a window"); 
      System.exit(1); 
     } 

     glfwMakeContextCurrent(windowID); 
     GL.createCapabilities(); 

     glfwSwapInterval(1); 
    } 

    public void start() { 
     running = true; 

     float delta = 190f; 
     float x = 190f, y = 170f; 

     while (running && !glfwWindowShouldClose(windowID)) { 
      GL.createCapabilities(); 
      glViewport(0, 0, width, height); 
      glMatrixMode(GL_PROJECTION); 
      glLoadIdentity(); 
      glOrtho(0, width, height, 0, -1, 1); 
      glMatrixMode(GL_MODELVIEW); 
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

      float s = 150f; 
      x = (int) (delta += 0.01f); 
      GL11.glColor4f(1, 0.1f, 1, 1); 
      glBegin(GL_QUADS); 
      { 
       glVertex2f(+s + x, +s + y); 
       glVertex2f(-s + x, +s + y); 
       glVertex2f(-s + x, -s + y); 
       glVertex2f(+s + x, -s + y); 
      } 
      glEnd(); 

      glfwPollEvents(); 
      glfwSwapBuffers(windowID); 
     } 

     glfwDestroyWindow(windowID); 
     glfwTerminate(); 

     System.exit(0); 
    } 

    public void end() 
    { 
     running = false; 
    } 

    public static void main(String[] args) 
    { 
     new Test().start(); 
    } 
} 

빠른 노트,이 모든 모양과 질감으로 발생 : 여기

내 컴퓨터에이 오류를 생성하는 예제 프로그램입니다. 어떤 도움을 주셔서 감사합니다. 감사.

+0

저는 전문가는 아니지만, lwjgl에서만 발생하는 Opengl의 이상한 동작을 경험했습니다. – javaLover

답변

0

NVIDIA는 OpenGL을 통해 제어판의 FXAA 설정에 영향을 줄 수있는 방법을 제공하지 않습니다. 당신이 묶을 수있는 숨겨진 NVIDIA API가있을 수도 있지만 그 외에는 없습니다.

전원을 켜는 사용자가 작동하지 않는 프로그램을 끄는 방법을 알고 있기를 바랄뿐입니다.

+0

그게 유감입니다. 어딘가에서 내부 설정에 대한 문서를 찾을 수 있는지 확인해 보겠습니다. –

+0

일부 문서/증거가 제공되면 좋을 것입니다. 나는 또한 호기심이 많다. – javaLover

+0

NVIDIA 제어판의 목적은 원치 않는 설정을 덮어 쓰는 것이라고 생각합니다. 대부분의 설정에는 '응용 프로그램 결정'옵션이 있기 때문입니다. 드라이버 자체는 항상 실행중인 프로그램보다 강하다. – Dynamitos

관련 문제