Commit Graph

34 Commits

Author SHA1 Message Date
elipzer
0c767e9441 Added Pipelines!
Greatly streamline the concept of rendering and abstract rendering
so that scenes can render from many different pipelines if they
want to!.
2018-10-14 15:06:51 -04:00
elipzer
e84ad4f9a1 Renamed project names (but not file names) to proper names.
Still need to find a way to rename the project file names.
2018-10-11 01:32:32 -04:00
elipzer
7cbe8acf30 Libraries Work!
Now the code is being compiled through .lib files!
2018-10-11 01:26:24 -04:00
Elipzer
8da055a018 Filters update for removing stdafx.cpp 2018-10-10 17:44:49 -04:00
Elipzer
8867e8086e Changed stdafx.h to be deps.h 2018-10-10 17:44:15 -04:00
Elipzer
5a9765b111 Image Rendering almost works!
There is an OpenGL error (1282) invalid operation that is getting
caught when switching to the imagescene. This needs to get fixed
and then hopefully the whole thing will work.
2018-10-09 19:58:26 -04:00
elipzer
b7456401e0 Almost able to render the image
Added image scene to render an image in a scene. There is also now
a testing image that is an uber meme. Currently the problem is
that the spritebatch cannot use the offsetof macro because it is a
templated class. Possible solutions to this are changing it to be
specifyable or implemented per vertex type as the other batches
have been.
2018-10-09 11:42:17 -04:00
elipzer
a8abb4afc9 Added a Sprite class to render 2D things
The sprite inherits from Poseable. It is intended to allow for
pure 2D rendering or integration of sprites/particles into 3D
scenes. Eventually an ImageScene should be created to test out the
image loading, sprite movement and rotation, and 2D camera
functionality for the builtin engine.
2018-10-08 15:19:48 -04:00
elipzer
07a781c075 Started image loading with lodepng 2018-10-07 21:51:05 -04:00
Elipzer
821111416f Added namespaces to builtin types 2018-09-19 03:52:42 -04:00
Elipzer
cc9db05987 Added Baseline for LitShadowedScene 2018-09-18 16:55:32 -04:00
elipzer
c0d49da992 Getting Closer to Textures 2018-09-15 20:43:29 -04:00
elipzer
ae7fcc9011 Starting Textured Scene
Want to use seperate textures and samplers for the scene to allow
for more modularization. Currently have created a texture class
and started creating a scene class.
2018-09-15 17:40:49 -04:00
elipzer
9920dfc25b Added Diffuse Light to LitScene
YES! FINALLY LIGHTING! Next up is specular light!
2018-09-14 21:29:05 -04:00
elipzer
af20d28442 Added Ambient Lighting for LitScene 2018-09-14 18:09:43 -04:00
elipzer
ada349c0a2 Added builtin Namespace
The builtin namespace is intended to be a slighly higher level
interface with OpenGL through the charcoal engine. It is inteneded
to allow the developer to create applications without needing to
create shader code or worry about rendering techniques. Eventually,
applications with lighting, textures, vertex coloring, shadows, and
a text-based UI should be available through the builtin namespace
2018-09-14 14:20:09 -04:00
elipzer
d63f341d89 More builtin abstraction
Got the builtin basicscene to render. For some reason, it seems
like the model matrices are not working correctly. The two shapes
that are supposed to be rendering on screen are not moving around
as they should be.
2018-09-13 19:21:34 -04:00
elipzer
a933c19fa9 Got the scene to render.
Need to re-make the builtin version. The problem, again, was caused
by vtables. Need to find a way to make interfaces without virtual
methods to remove the need for vtables. Found a good stackoverflow
article on this.

https://stackoverflow.com/questions/44317289/c-interface-without-virtual-functions

The Positioned, Normaled, Textured, etc. Interfaces should be
re-made using this format.
2018-09-13 13:35:30 -04:00
elipzer
991b52b233 Almost Finished Builtin
Builtin general structure created. Added a builtin::BasicScene
class for quick general testing of the engine on different systems.
The builtin::BasicScene class greatly reduces the amount of code
needed to be handled by the developer by offering a pre-made way
to handle it. It even includes pre-made shaders!
2018-09-13 00:51:47 -04:00
elipzer
31e3d15ab1 Builtins
Starting the setup for builtin types for rendering. This will allow
the engine to be easier to use for beginners while still offering
great modularity and functionality. The builtin namespace is
intended to simplify mesh loading and rendering. It should
eventually offer pre-made shaders to simplify the rendering of the
builtin types. Possibly in the future, it could have partially
setup scenes/application to simplify scene/application building
2018-09-12 18:46:36 -04:00
Elipzer
90bac19849 3D Cube
Finally got a 3D cube to be rendered. While doing it, fixed a
bug in MeshFactory that caused it to allocate the incorrect amount
of memory for each mesh.
2018-09-11 16:49:34 -04:00
Elipzer
9d37a3007f Add Relative Shader Directory Preprocessor to .sln
This allows computers that do not have my personal directory setup
to use visual studio macros to get to the shader dir.
2018-09-11 12:10:11 -04:00
elipzer
6164aa82b2 Cleaned up File Names 2018-09-11 01:18:17 -04:00
elipzer
f57c972be0 Working on Model-to-World Matrices
Currently, this feature breaks a bunch of stuff :(. Have to get
poseable to work with the objects.
2018-09-10 11:35:02 -04:00
elipzer
75357b330c Added Dependency: GLM
Now using GLM instead of the custom math libraries.
Sadly, this did not 100% fix the problem at hand but it does give
some closure that the math is not the problem.

Also it will be nice to have a general math library to not have to
deal with creating every math function every time.
2018-09-09 21:20:56 -04:00
elipzer
5a10a883fb Camera Class
Currently implemented a 2D camera class that creates an
orthographic projection matrix.

TODO is implementing a 3D camera class and test program.
2018-09-08 00:06:10 -04:00
elipzer
0a9fde252a Throbbing Trapezoid
The trapezoid now throbs between black and white. This was made to
test out the element buffers using MyBatch. Next up for the
batches should probably be to figure out the recommended way of
specifying more than one element buffer. Currently it is done
by specifying the number of elements to be stored and the number
of element vbos needed but maybe there is some way to get it to
work using variadic templates. There is a comment about this in
the Batch.h file.
2018-09-07 00:41:34 -04:00
elipzer
3485bcb2a0 Improved Batch Functionality
Now batches are actually batches.

Also added the MeshFactory class.

Drawing modes are now specified with DrawMode instead of the
GLenum. Renderables must be specified with a draw mode.
2018-09-06 23:22:40 -04:00
elipzer
2b8db77667 Code Cleanup 2018-09-06 01:14:00 -04:00
elipzer
a8c4b05d2f It Works! A triangle renders on the screen.
This commit gets creates the ObjectOriented scene and gets it
working.

The current test program swaps a triangle from small to large with
the 1 and 2 keys on the keyboard. (1 for small and 2 for large).

The small triangle is rendered by the simple scene and the large
one is rendered by the object oriented one.
2018-09-05 19:10:38 -04:00
elipzer
b494f68d0c A Working Triangle
Now using GLFW3 instead of the custom window class. This library
looks like it will make development much simpler and will make it
so that I am less worried about my windows code breaking. Currently
setup the http://antongerdelan.net/opengl/hellotriangle.html
tutorial in the MySimpleScene. Will probably create another scene
file to try to get the object oriented stuff working.
2018-09-05 16:26:50 -04:00
elipzer
40617c8953 More preparation for the legendary triangle. Currently working on Batch.h
to specify the batch pipeline specified at StackOverflow
See https://stackoverflow.com/questions/8923174/opengl-vao-best-practices#8923298
2018-09-05 11:47:09 -04:00
elipzer
34ba510e43 Prepare for Hello Triangle 2018-09-05 02:49:02 -04:00
elipzer
27fb4cf7ea Initial Commit 2018-09-04 15:25:54 -04:00