Anti-Grain Evolution. 2D graphics engine for Speed and Quality in C++.

Overview

Anti-Grain Evolution Build/Test

This project is based on ideas found in Maxim (mcseem) Shemanarev's Anti-Grain Geometry library, but oriented towards maximizing performance and stability. This engine sits on top of vector rasterizer and renderer rewritten from scratch in test-first style.

Here is how a simple drawing code looks like in agge:

using namespace agge;

...

bitmap<pixel32, platform::raw_bitmap> surface(150, 100);
rasterizer<unclipped> ras;
renderer ren;

add_path(ras, circle(10.0f /*x*/, 20.0f /*y*/, 5.0f /*radius*/).iterate());

ras.sort();

ren(surface, 0 /*no windowing*/, ras /*mask*/, solid_color_blender(0, 128, 255), winding());

// ... and, if on Windows:
surface.blit(hdc, 0, 0, 150, 100);

Note: to build for Android vs-android is required. This is planned to change.

You might also like...
CSC404: Computer Graphics [CG] & CSL402: Computer Graphics Lab [CG Lab] Semester IV

COMPUTER-GRAPHICS-AND-COMPUTER-GRAPHICS-LAB CSC404: CG & CSL402: CG LAB [SEMESTER IV] Syllabus CG - Reference Books THE WALL MEGA SATISH - AUTHOR CG C

Official Vanguard Anti-Cheat source code.

Vanguard Official Vanguard Anti-Cheat source code. Using the compiled binary For ease, an unprotected compiled version of Vanguard is available. Downl

Easy Anti PatchGuard

EasyAntiPatchGuard ##Support System = Win8 (Win8 - Win10 21H4) How to use 1.Build EasyAntiPatchGuard.sln 2.Load EasyAntiPatchGuard.sys Detail as we kn

Another version of EVA using anti-debugging techs && using Syscalls
Another version of EVA using anti-debugging techs && using Syscalls

EVA2 Another version of EVA using anti-debugging techs && using Syscalls First thing: Dont Upload to virus total. this note is for you and not for me.

A loadlibrary injector for the game Splitgate that fully bypasses their EQU8 anti-cheat implementation.

splitgate-load-library-injector A loadlibrary injector for the game Splitgate that fully bypasses their EQU8 anti-cheat implementation. Information Th

研究和移除各种内核回调,在anti anti cheat的路上越走越远

driver_callback_bypass_1909 研究和移除各种内核回调,在anti anti cheat的路上越走越远 测试系统 全部代码运行在1909系统下(Microsoft Windows [版本 10.0.18363.592]) 更新 主要回调都绕过,分析出来自会上传,完毕后写一个专

Authors' implementation of our SIGGRAPH Asia 2021 Technical Communications (Viewport-Resolution Independent Anti-Aliased Ray Marching on Interior Faces in Cube-Map Space) demo II. Fast real-time volume rendering for an external volume texture with mesh occlusion. Blumentals Program Protector v4.x anti protection toolkit
Blumentals Program Protector v4.x anti protection toolkit

VeNoM A Blumentals Program Protector v4.x anti protection toolkit. Reverse engineering proof-of-concept code. Screenshot & demo venomdemo.mp4 Usage Th

The FLIP Fluids addon is a tool that helps you set up, run, and render high quality liquid fluid effects all within Blender, the free and open source 3D creation suite.

FLIP Fluids The FLIP Fluids addon is a tool that helps you set up, run, and render liquid simulation effects. Our custom built fluid engine is based a

Comments
  • Anti-Grain Evolution !

    Anti-Grain Evolution !

    Really happy to see Anti-Grain Evolution ! Thank you for this !

    Do you have any plans to use C++17 or at least C++14 for it ? Asking this because there are bunch of std::auto_ptr in the code and other pre C++11 code.

    opened by Remotion 4
  • Several build issues on MacOS

    Several build issues on MacOS

    ../src/agge/parallel.cpp:21:68: error: arithmetic on a pointer to an incomplete type 'agge::parallel::thread'
    ../src/agge/parallel.cpp:22:12: error: allocation of incomplete type 'agge::parallel::thread'
    ../src/agge/parallel.cpp:39:11: error: subscript of pointer to incomplete type 'agge::parallel::thread'
    ../src/agge/parallel.cpp:40:11: error: subscript of pointer to incomplete type 'agge::parallel::thread'
    ../src/agge/parallel.cpp:44:11: error: subscript of pointer to incomplete type 'agge::parallel::thread'
    ../src/agge/parallel.cpp:52:11: error: subscript of pointer to incomplete type 'agge::parallel::thread'
    ../agge/memory.h:33:11: error: invalid application of 'sizeof' to an incomplete type 'agge::parallel::thread'
    ../agge.text/font.h:51:16: error: implicit instantiation of undefined template 'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >'
    ../agge.text/font.h:48:47: error: implicit instantiation of undefined template 'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >'
    ../agge.text/font.h:51:16: error: implicit instantiation of undefined template 'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >'
    ../agge.text/font.h:48:47: error: implicit instantiation of undefined template 'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >'
    ../agge.text/font.h:51:16: error: implicit instantiation of undefined template 'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >'
    ../agge.text/font.h:48:47: error: implicit instantiation of undefined template 'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1991:29: error: cannot initialize object parameter of type 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font> >, void *> *>' with an expression of type 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font> >, void *>'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1996:23: error: cannot initialize object parameter of type 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font> >, void *> *>' with an expression of type 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font> >, void *>'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2003:16: error: static_cast from 'pointer' (aka 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font> >, void *> *') to '__next_pointer' (aka 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font> >, void *> *> *'), which are not related by inheritance, is not allowed
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1991:29: error: cannot initialize object parameter of type 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font::accessor> >, void *> *>' with an expression of type 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font::accessor> >, void *>'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1996:23: error: cannot initialize object parameter of type 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font::accessor> >, void *> *>' with an expression of type 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font::accessor> >, void *>'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2003:16: error: static_cast from 'pointer' (aka 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font::accessor> >, void *> *') to '__next_pointer' (aka 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::weak_ptr<agge::font::accessor> >, void *> *> *'), which are not related by inheritance, is not allowed
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1991:29: error: cannot initialize object parameter of type 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::pair<agge::font *, unsigned int> >, void *> *>' with an expression of type 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::pair<agge::font *, unsigned int> >, void *>'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1996:23: error: cannot initialize object parameter of type 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::pair<agge::font *, unsigned int> >, void *> *>' with an expression of type 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::pair<agge::font *, unsigned int> >, void *>'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2003:16: error: static_cast from 'pointer' (aka 'std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::pair<agge::font *, unsigned int> >, void *> *') to '__next_pointer' (aka 'std::__1::__hash_node_base<std::__1::__hash_node<std::__1::__hash_value_type<agge::font::key, std::__1::pair<agge::font *, unsigned int> >, void *> *> *'), which are not related by inheritance, is not allowed
    

    This is using a fairly up to date clang-suite on MacOS. Might I suggest adding the -Wall -Wextra -Werror and -std=c++11 (or appropriate standard) flags in your CMakeLists.txt for applicable platforms? It'll help the robustnest of the code.

    opened by Qix- 4
  • Performance

    Performance

    Hi there!

    Great to see this library :) I'm interested to know if you've done any performance comparisons between agg and agge that you'd be willing to share? Very interested to see what your improvements are!

    Also, I note that on the surface you have cut down dramatically on the number of source files compared to the original. Is this because you have simplified it, or have you implemented only a subset of the original features?

    All the best, Projectitis

    opened by projectitis 1
Releases(v0.3)
Owner
Artem G.
Artem G.
Speed Running and Competition Doom. For strictly vanilla speed runs and competitions - forked from CNDoom

Speed Running and Competition Doom Speed Running and Competition Doom is based on Chocolate Doom and aims to accurately reproduce the original DOS ver

Gibbon 3 May 24, 2022
Sword Engine is a fork of Psych Engine that plans on adding more features and quality of life improvements.

⚠️ WARNING: This README is currently incomplete, This warning will be removed once it's complete. Friday Night Funkin' - Sword Engine Sword Engine is

swordcube 7 Jul 9, 2022
A tiny evolution simulator, which uses SDL2 and is written in C

evosim Evosim is a small evolution simulator. Evosim uses the SDL2 library for graphics. The program can be compiled by simply running make in the evo

Victor Ocampo 2 Nov 20, 2021
Simple evolution simulator with generations mechanic and customizable settings.

SimpleEvolution Simple evolution simulator with generations mechanic and customizable settings. Field is divided in three sections: safe zone, medium

Oleg 3 Dec 18, 2021
Biological evolution simulator

biosim4 What is this? This pile of code was used to simulate biological creatures that evolve through natural selection. The results of the experiment

David R. Miller 2.3k Dec 31, 2022
A comprehensive guide to 50 years of evolution of strict C programming, a tribute to Dennis Ritchie's language

42 School Cheat Sheet by agavrel ?? Intended for 42 alumni, current students and candidates Truth can only be found in one place: the code – Robert C.

Antonin GAVREL 1.1k Jan 3, 2023
Open Source Cheat for Apex Legends, designed for ease of use. Made to understand reversing of Apex Legends and respawn's modified source engine as well as their Easy Anti Cheat Implementation.

Apex-Legends-SDK Open Source Cheat for Apex Legends, designed for ease of use. Made to understand reversing of Apex Legends and respawn's modified sou

null 111 Jan 8, 2023
GraphicsFuzz provides tools for automatically finding and simplifying bugs in graphics drivers, specifically graphics shader compilers.

GraphicsFuzz GraphicsFuzz is a set of tools for testing shader compilers GraphicsFuzz provides tools for automatically finding and simplifying bugs in

Google 516 Dec 15, 2022
OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.

OpenGL Template Engine is a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects. This is the template I personally use for my own projects and provides me with the general OpenGL 3D render setup with model import and UI.

Marcus Nesse Madland 2 May 16, 2022
F Graphics Library (FGL) is a small graphics C++ portable library for LCD displays on embedded systems

F Graphics Library (FGL) Full documentation: fgl.docsforge.com (By Filipe Chagas) F Graphics Library is a C++ library that I created for use in embedd

Filipe Chagas 9 Oct 31, 2022