Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I created an engine which draws 2D planes in the Stage3D API in Actionscript 3. And my question is, how do I turn all anti-aliasing off, because when I scale it all the pixels get really blurry, and I'm trying to use pixel-art for this.

This is the code I use:

protected function setupShaders() {
        var vertexShaderAssembler:AGALMiniAssembler = new AGALMiniAssembler();
        vertexShaderAssembler.assemble( Context3DProgramType.VERTEX,
                "dp4 op.x, va0, vc0 \n"+
                "dp4 op.y, va0, vc1 \n"+
                "mov op.z, vc2.z    \n"+
                "mov op.w, vc3.w    \n"+
                "mov v0, va1.xy     \n"+
                "mov v0.z, va0.z    \n");

        var fragmentShaderAssembler:AGALMiniAssembler = new AGALMiniAssembler();
        fragmentShaderAssembler.assemble( Context3DProgramType.FRAGMENT,
                "tex ft0, v0, fs0 <2d,clamp,linear, nomip>\n"+
                "mov oc, ft0 \n");

        shader = context3D.createProgram();
        shader.upload(vertexShaderAssembler.agalcode, fragmentShaderAssembler.agalcode);

public function draw() {

        context3D.setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA);
        context3D.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, parent.modelViewMatrix, true);
        context3D.setTextureAt(0, sprites.texture);

        if (updateVBOs) {
            vertexBuffer = context3D.createVertexBuffer(vertices.length / 3,3);
            indexBuffer = context3D.createIndexBuffer(indices.length);
            uvBuffer = context3D.createVertexBuffer(UVs.length >> 1, 2);
            indexBuffer.uploadFromVector(indices, 0, indices.length);
            uvBuffer.uploadFromVector(UVs, 0, UVs.length >>1);
            updateVBOs = false;

        vertexBuffer.uploadFromVector(vertices, 0, vertices.length / 3);
        context3D.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3);
        context3D.setVertexBufferAt(1, uvBuffer, 0,  Context3DVertexBufferFormat.FLOAT_2);

        context3D.drawTriangles(indexBuffer, 0, nChildren << 1);

public function configureBackBuffer(width:uint, height:uint) {
        context3D.configureBackBuffer( width, height, 0, false);


share|improve this question
up vote 0 down vote accepted

I found the answer, instead of "tex ft0, v0, fs0 <2d, clamp, linear, nomip>\n" I had to do "tex ft0, v0, fs0 <2d, clamp, nearest, nomip>\n"

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.