P3D 렌더러를 사용하여 PGraphics 인스턴스에서 앨리어싱/스무딩없이 기본 3D 도형을 렌더링하고 싶지만 noSmooth()가 작동하지 않는 것 같습니다.P3D 렌더러에서 noSmooth()를 어떻게 얻을 수 있습니까?
OF에서 텍스처에서 setTextureMinMagFilter(GL_NEAREST,GL_NEAREST);
을 부르는 것을 기억합니다.
처리 중 해당 항목은 무엇입니까?
나는 PGL를 사용하려 :PGL.TEXTURE_MIN_FILTER = PGL.NEAREST;
PGL.TEXTURE_MAG_FILTER = PGL.NEAREST;
하지만 난 결과로 검은 이미지를 얻을. 내가 의견을 말하면 PGL.TEXTURE_MIN_FILTER = PGL.NEAREST;
나는 렌더를 볼 수는 있지만 보간 된 것이지 예리한 것은 아니다. 내가 시도한 몇 가지와
Here'a 기본 테스트 스케치 :
PGraphics buffer;
PGraphicsOpenGL pgl;
void setup() {
size(320, 240, P3D);
noSmooth();
//hint(DISABLE_TEXTURE_MIPMAPS);
//((PGraphicsOpenGL)g).textureSampling(0);
//PGL pgl = beginPGL();
//PGL.TEXTURE_MIN_FILTER = PGL.NEAREST;
//PGL.TEXTURE_MAG_FILTER = PGL.NEAREST;
//endPGL();
buffer=createGraphics(width/8, height/8, P3D);
buffer.noSmooth();
buffer.beginDraw();
//buffer.hint(DISABLE_TEXTURE_MIPMAPS);
//((PGraphicsOpenGL)buffer).textureSampling(0);
PGL bpgl = buffer.beginPGL();
//PGL.TEXTURE_MIN_FILTER = PGL.NEAREST;//commenting this back in results in a blank buffer
PGL.TEXTURE_MAG_FILTER = PGL.NEAREST;
buffer.endPGL();
buffer.background(0);
buffer.stroke(255);
buffer.line(0, 0, buffer.width, buffer.height);
buffer.endDraw();
}
void draw() {
image(buffer, 0, 0, width, height);
}
(나는 또한 posted on the Processing Forum했지만, 지금까지 운)
그때 제대로 기억한다면'buffer.noSmooth()'의도 한대로 수행합니다. 그러나'image()'를 호출하면'noSmooth()'가 완전히 무시됩니다. – Vallentin
@Vallentin 팁 주셔서 감사. 내 직감은 아마도 PGL 텍스처에 대한 참조를 가져와 바인드하고,''''pgl.getTexParameteriv (PGL.TEXTURE_2D, PGL.TEXTURE_MIN_FILTER ...'''또는 이와 비슷한 것을 호출 할 필요가 있습니다. –