cjdb / doge Goto Github PK
View Code? Open in Web Editor NEWAn open source game engine leveraging C++17, Concepts TS, Ranges TS, OpenGL 4.3, Vulkan, and SYCL.
License: Apache License 2.0
An open source game engine leveraging C++17, Concepts TS, Ranges TS, OpenGL 4.3, Vulkan, and SYCL.
License: Apache License 2.0
Support for the following operators (where semantically valid):
a &= b
, a & b
a |= b
, a | b
a ^= b
, a ^ b
!a
, ~a
a >>= b
, a >> b
a <<= b
, a << b
doge currently relies on GLFW3. This is not guaranteed for the future, so it is important that all GLFW3 details are replaced with doge equivalents.
The project is migrating from west-const
(const auto
) to east-const
(auto const
). This will mostly be a clean-up-as-you-touch-the-file process, but it will also be a good first issue.
Pre-GCC 8 doge implementations cannot use the Filesystem library due to an internal compiler error crashing on even the simplest programs that mix the Filesystem library and the Ranges TS reference implementation (see GCC bug 84139). This appears to have been fixed in
The current intention is to change path types from std::string
to std::filesystem::path
(aliased, of course), when GCC trunk is tagged as gcc_8_1_0
, and can be built for MinGW-w64. As doge does not currently have a notion of backwards-compatibility, the abandonment of GCC 7 is a non-issue.
Jason Turner recently challenged C++ programmers to construe the least-efficient program they could, using string
, string_view
, filesystem::path
, char const*
, and implicit conversions on Twitter. I did not participate in his challenge, although I remarked that it would be a good idea to investigate whether blindly switching from string
to filesystem::path
is a good idea. This investigation hasn't happened yet, and it must occur before any pull requests with filesystem::path
are accepted.
The HID interface currently uses init
functions to establish a relationship between the run-time and the devices being interfaced with. This is both expensive (users who don't use the keyboard still need to pay for it), and terrible style.
They need to be replaced with constructors, but I can't figure out how to properly do it for these two interfaces.
The current CMake files are out-of-date (possibly pre-CMake 3.3?). They should be updated so that they take advantage of the new CMake 3.11 features.
Completed pre-issue logging. Added for tracking only.
Completed pre-issue logging. Added for tracking only.
Completed pre-issue logging. Added for tracking only.
Turn on -fstrict-aliasing -Wstrict-aliasing
.
uniform
should be able to support contiguous ranges, such as uniform<array<T, N>>
and uniform<vector<T>>
.
Adding support for arrays should be trivial; adding safe support for vectors in OpenGL 4.3 will be tricky.
Vertex array objects are important for rendering objects on-screen. At present, the VAO abstractions are workable, but not elegant.
There is a serious lack of documentation in this project. Adding documentation will be a boon for future use.
The use of GLM is an implementation detail; not something that the user should concern themselves with. If the project changes its maths library, or it implements its own, the user should remain largely unaffected (except for possibly needing to install a new dependency).
Most of the types are defined in include/doge/types.hpp
, but they are rarely used. It would be great if all uses of glm::*
were confined to the internal workings of doge
, and the external interface was reflected as doge::*
instead.
Completed pre-issue logging. Added for tracking only.
Element buffers are important for rendering objects with overlapping vertices. Current support for them is workable, but not ideal.
Completed pre-issue logging. Added for tracking only.
The current project requires programmers to manually download all external dependencies. This is unacceptable for a useful project.
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.