2015-11-01 7 views
3

Я использую обработку 3 (и 2) как на OSX, так и на Windows. Линейная графика в офшорном буфере PGraphics значительно уродливее, чем прямые линии. Похоже, что сглаживание по краям формы не работает.обработка 3 вне экрана уродливая

Можете ли вы помочь мне сделать экранную буферную графику лучше?

exmple изображение ugly offscreen on the right, on-screen on the left

образец кода

PGraphics pg; 

void setup(){ 
    size (1024,768, P2D); 
    pixelDensity(2); 
    smooth(); 
    pg = createGraphics(width, height, P2D); 
    noLoop(); 
} 

void draw(){ 
    background (0); 
    pushMatrix(); 
    translate (width/2-100, height/2); 
    rotate (PI/6); 
    stroke(255); 
    noFill(); 
    strokeWeight(0.5); 
    rect (0,0,100,100); 
    popMatrix(); 

    pg.beginDraw(); 
    pg.smooth(); 
    pg.clear(); 
    pg.translate (width/2+100, height/2); 
    pg.rotate (PI/6); 
    pg.stroke(255); 
    pg.noFill(); 
    pg.strokeWeight(0.5); 
    pg.rect (0,0,100,100); 
    pg.endDraw(); 

    image(pg,0,0, width, height); 

    save("shot.png"); 
} 

Спасибо!

Этот вопрос также подвергся воздействию перекрестного давления на форуме обработки here.

+0

свяжите между перекрестными объявлениями: https://forum.processing.org/two/discussion/13355/offscreen-pgraphics-is-ugly –

ответ

1

Проблема вызвана обработкой, позволяющей сглаживание по умолчанию. Вы разрешаете его явно, вызывая функцию smooth(), но обратите внимание, что это постороннее, поскольку оно уже включено по умолчанию.

Это приводит к тому, что ваши линии «размыты» между их собственным цветом и цветом фона. В экранном буфере этот цвет фона черный. В буфере вне экрана этот цвет фона прозрачен. Вот почему ваш экран вне экрана выглядит более прозрачным, потому что он есть.

Чтобы исправить это, вам необходимо отключить сглаживание, вызывая noSmooth(), или вам нужно убедиться, что вы рисуете на тот же цвет фона. Вот noSmooth() подхода:

PGraphics pg; 

void setup(){ 
    size (1024,768, P2D); 
    noSmooth(); 
    pg = createGraphics(width, height, P2D); 
    noLoop(); 
} 

void draw(){ 
    background (0); 
    pushMatrix(); 
    translate (width/2-100, height/2); 
    rotate (PI/6); 
    stroke(255); 
    noFill(); 
    strokeWeight(0.5); 
    rect (0,0,100,100); 
    popMatrix(); 

    pg.beginDraw(); 
    pg.noSmooth(); 
    pg.clear(); 
    pg.translate (width/2+100, height/2); 
    pg.rotate (PI/6); 
    pg.stroke(255); 
    pg.noFill(); 
    pg.strokeWeight(0.5); 
    pg.rect (0,0,100,100); 
    pg.endDraw(); 

    image(pg,0,0, width, height); 

} 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^