gepardgraphics / gepard Goto Github PK
View Code? Open in Web Editor NEWThis project forked from szledan/gepard
Gepard - HW accelerated 2D engine
License: Other
This project forked from szledan/gepard
Gepard - HW accelerated 2D engine
License: Other
Currently all the auxiliary function return with void
and get value reference instead of returning with the value.
Setup Doxygen environment.
Setup the doxigen.conf
settings file.
Create a basic html page.
This is the main tracker issue for the Vulkan related issues.
The following tasks (please keep it up to date):
This meta issue collects some easy feature issues tagged with LHF label.
Good luck! :)
If you have any question or feedback about the project's coding style, please feel free to comment here.
Now there are bunch of backend target releated guards in the sources, remove it.
This issue tracks the state of the API refactoring, which was agreed during the GeCo 2017.
The implementation is inconsistent in the term of checking the VkResult variable, and it is generating several warning during the release build.
Some of the vulkan structures are poorly commented or lacks of the comment at all.
When I tried to enable the logger I got the following linker error.
$ tools/scripts/build.py -e --backend vulkan -d --log-level 1
...
[ 83%] Linking CXX shared library ../lib/libgepard.so
CMakeFiles/gepard.dir/utils/gepard-types.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gepard.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gpu/gepard-path.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gpu/vulkan/gepard-vulkan-instance.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
CMakeFiles/gepard.dir/gpu/vulkan/gepard-vulkan.cpp.o: In function `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
/home/kristof/work/gepard/src/utils/gepard-defs.h:89: multiple definition of `_log(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
CMakeFiles/gepard.dir/gepard-engine.cpp.o:/home/kristof/work/gepard/src/utils/gepard-defs.h:89: first defined here
...
warning: deleting object of polymorphic class type ‘gepard::XSurface’ which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
delete surface;
^
This is the main tracker issue for documentations of Gepard.
We need to add documentation for the following ittems:
Please use the Doxygen annotations in Gepard source code. (See.: www.doxygen.org)
It could be interesting: Gepard coding-style.
Link: https://reviewable.io/
The Khronos's Vulkan API is one of the state of the art graphics library.
For further reference check the http://vulkan.io
As part of the investigation create small example which uses the Vulkan API.
Add support for drawing different rectangles.
The vulkan doesn't support the shader compilation in runtime, so currently the shader sources are compiled manually. It would be usefully to compile the SpirV binaries at compile time and store it in the library.
Add support for the gradients
There are several vulkan resources which would benefit from this. Such classe for example are the following:
#define LOG1(MSG)
#define LOG2(MSG)
#define LOG3(MSG)
+#define GD_LOG_ERR(MSG) // <-- send the MSG to the 'std::cerr' instead of 'std::cout'
Add class which contains the current transformations, filling styles and other state related infos.
Also needs to support state save and restore function.
The directory tree could use a second look, for example we should probably separate the different APIs into directories.
Use STL or own smart pointers.
Example: unique/move pointer instead of GepardEngine*
in gepard.h
, or unique/move pointer instead of GepardEngineBackend*
in gepard-engine.h
, etc.
The u_sampler
isn't set during the uniform initialization, it works now because the default value is 0 and the the texture id is 0 as well, but this should be set to the proper value.
Support of image drawing. This also needs image creating/loading to have proper support.
The current README.md is outdated since the build-system was reworked.
Please update the console snippets.
Add support for text handling.
There are lots of room to improve the Readme, such as creating proper contributing description, provide better quickstart guide and document the build/run-time options.
We should use auto-completion python scripts if it isn't a big issue.
This issue tracks the discussions and issues related to the public API.
The build-essential
package should be added to the dependencies.
If not installed the following error will occur when you try to build:
cmake fails with “CMake Error: your CXX compiler: ”CMAKE_CXX_COMPILER-NOTFOUND“ was not found.”
Add support of the path object.
GLES-2.0
support. (version-0.0.2)
VULKAN
support.
Keep the make
system for the developers.
Improve the build-system with a tools/scripts
folder for general purpose scripts. Ex.: build-gepard, run-unit-tests, etc.
Please use python for the scripts.
Different platforms have different versions of cppcheck packaged, which is especially problematic on travis, where we have to use a very ancient one. We should build cppcheck from source as a dependency, so we get consistent error messages.
See: Coding-style#defines
I think the googletest[1] is an easy-to-use open source c++ testing framework. (License: BSD3)
So I suggest using this framework.
If there is no objection, I will start to integrate this.
cc: @kkristof , @elecro
Infos:
[1] https://github.com/BillyDonahue/googletest
[2] http://www.ibm.com/developerworks/aix/library/au-googletestingframework.html
[3] https://github.com/google/googletest/blob/master/googletest/docs/Documentation.md
We should design a simple logging system.
Criteria:
[1] Nitpicked example:
int x = 1;
void* ptr = Class::create();
Float value = ptr->fx(x) * x;
LOG1("The value is ptr[" << ptr << "].fx(x=" << x << ") * x = " << value << ".");
It is very easy, similar to the gepard::GepardEngine::closePath()
.
Replace the NOT_IMPLEMENTED()
macro to the corresponding call, and write some sentences in Doxygen comments instead of \todo unimplemented function
.
File: ./src/gepard-engine.cpp
We should create a simple example for getting to know the gepard
library.
triangle.cpp
example with a simple triangle implementation. (#54)README.md
(#54)Add more information about the project. (e.g. wiki, contributors, build)
Currently the public API header is not usable, because it depends on other header files. This should be resolved.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.