diff options
author | chai <chaifix@163.com> | 2018-05-17 23:00:52 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-05-17 23:00:52 +0800 |
commit | d66b07724d71321545e80a8e12736be0e9a5d24a (patch) | |
tree | 3fa484f48b1b2ce999892942c779ab1d14554110 | |
parent | b293e9e2242c08c15e1a3248c6dec301e83652d4 (diff) |
Add audio module
-rw-r--r-- | bin/jin.exe | bin | 1443840 -> 1391616 bytes | |||
-rw-r--r-- | build/vs2015/jin.vcxproj | 2 | ||||
-rw-r--r-- | build/vs2015/jin.vcxproj.filters | 6 | ||||
-rw-r--r-- | src/libjin/audio/source.cpp | 2 | ||||
-rw-r--r-- | src/libjin/audio/source.h | 19 | ||||
-rw-r--r-- | src/libjin/render/jsl.cpp | 25 | ||||
-rw-r--r-- | src/libjin/render/jsl.h | 19 | ||||
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/script/graphics/luaopen_graphics.cpp | 2 |
9 files changed, 48 insertions, 29 deletions
diff --git a/bin/jin.exe b/bin/jin.exe Binary files differindex a3864ad..66fe30b 100644 --- a/bin/jin.exe +++ b/bin/jin.exe diff --git a/build/vs2015/jin.vcxproj b/build/vs2015/jin.vcxproj index cb5dab9..f9a184d 100644 --- a/build/vs2015/jin.vcxproj +++ b/build/vs2015/jin.vcxproj @@ -136,6 +136,7 @@ </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\..\src\libjin\audio\audio.cpp" /> + <ClCompile Include="..\..\src\libjin\audio\source.cpp" /> <ClCompile Include="..\..\src\libjin\core\game.cpp" /> <ClCompile Include="..\..\src\libjin\fs\filesystem.cpp" /> <ClCompile Include="..\..\src\libjin\input\event.cpp" /> @@ -208,6 +209,7 @@ <ClInclude Include="..\..\src\data\font.ttf.h" /> <ClInclude Include="..\..\src\data\icon.png.h" /> <ClInclude Include="..\..\src\libjin\audio\audio.h" /> + <ClInclude Include="..\..\src\libjin\audio\source.h" /> <ClInclude Include="..\..\src\libjin\core\core.h" /> <ClInclude Include="..\..\src\libjin\core\game.h" /> <ClInclude Include="..\..\src\libjin\fs\buffer.h" /> diff --git a/build/vs2015/jin.vcxproj.filters b/build/vs2015/jin.vcxproj.filters index 67d4d9d..d9c8cc4 100644 --- a/build/vs2015/jin.vcxproj.filters +++ b/build/vs2015/jin.vcxproj.filters @@ -300,6 +300,9 @@ <ClCompile Include="..\..\src\script\graphics\luaopen_Tilemap.cpp"> <Filter>src\script\graphics</Filter> </ClCompile> + <ClCompile Include="..\..\src\libjin\audio\source.cpp"> + <Filter>src\libjin\audio</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\src\3rdparty\GLEE\GLee.h"> @@ -509,6 +512,9 @@ <ClInclude Include="..\..\src\data\icon.png.h"> <Filter>src\data</Filter> </ClInclude> + <ClInclude Include="..\..\src\libjin\audio\source.h"> + <Filter>src\libjin\audio</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="..\..\src\3rdparty\lua51\Makefile"> diff --git a/src/libjin/audio/source.cpp b/src/libjin/audio/source.cpp new file mode 100644 index 0000000..cca4d3e --- /dev/null +++ b/src/libjin/audio/source.cpp @@ -0,0 +1,2 @@ +#include "source.h" + diff --git a/src/libjin/audio/source.h b/src/libjin/audio/source.h new file mode 100644 index 0000000..8b4b888 --- /dev/null +++ b/src/libjin/audio/source.h @@ -0,0 +1,19 @@ +#ifndef __JIN_AUDIO_SOURCE_H +#define __JIN_AUDIO_SOURCE_H + +#include <SDL2/SDL.h> + +namespace jin +{ +namespace audio +{ + + class Source + { + + }; + +} +} + +#endif
\ No newline at end of file diff --git a/src/libjin/render/jsl.cpp b/src/libjin/render/jsl.cpp index 1fb4482..1935edc 100644 --- a/src/libjin/render/jsl.cpp +++ b/src/libjin/render/jsl.cpp @@ -11,12 +11,15 @@ namespace render "#define Image sampler2D \n" "#define Texel texture2D \n" "#define extern uniform \n" - "uniform sampler2D _tex0_; \n" + "uniform Image _tex0_; \n" "%s \n" "void main(){ \n" "gl_FragColor = effect(gl_Color, _tex0_, gl_TexCoord[0].xy, gl_FragCoord.xy);\n" "}\0"; + shared GLint JSLProgram::_current_texture_unit; + shared GLint JSLProgram::_max_texture_units; + void JSLProgram::init(const char* program) { glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &_max_texture_units); @@ -32,27 +35,17 @@ namespace render glLinkProgram(pid); } - shared std::map<std::string, GLint> JSLProgram::_texture_unit_pool; - shared GLint JSLProgram::_current_texture_unit = 0; - shared GLint JSLProgram::_max_texture_units = 0; - shared GLint JSLProgram::getTextureUnit(const std::string& name) { - std::map<std::string, GLint>::const_iterator it = _texture_unit_pool.find(name); - - if (it != _texture_unit_pool.end()) - return it->second; - - if (++_current_texture_unit >= _max_texture_units) - return 0; - - _texture_unit_pool[name] = _current_texture_unit; - return _current_texture_unit; + if (++_current_texture_unit >= _max_texture_units) + return 0; + return _current_texture_unit; } void JSLProgram::use() { glUseProgram(pid); + _current_texture_unit = 0; } shared void JSLProgram::unuse() @@ -71,10 +64,10 @@ namespace render GLint texture_unit = getTextureUnit(variable); GLint location = glGetUniformLocation(pid, variable); + glUniform1i(location, texture_unit); glActiveTexture(GL_TEXTURE0 + texture_unit); glBindTexture(GL_TEXTURE_2D, image->getTexture()); // guarantee it gets bound - glUniform1i(location, texture_unit); // reset texture unit glActiveTexture(GL_TEXTURE0); diff --git a/src/libjin/render/jsl.h b/src/libjin/render/jsl.h index 570235b..4e0a6f0 100644 --- a/src/libjin/render/jsl.h +++ b/src/libjin/render/jsl.h @@ -1,17 +1,16 @@ #ifndef __JIN_JSL_H #define __JIN_JSL_H + #include <string> #include <map> #include "image.h" #include "3rdparty/GLee/GLee.h" + namespace jin { namespace render { - /** - * A JSL program for shadering textures which is - * actually a glsl program. - */ + class JSLProgram { public: @@ -24,20 +23,18 @@ namespace render void sendFloat(const char* name, float number); void sendImage(const char* name, const Image* image); - //void sendMatrix(const char* name, int size, const GLfloat* m, int count); - //void sendCanvas(const char* name, const Canvas& canvas); - + private: + JSLProgram(); - // only id for identify glsl program GLuint pid; static GLint _current_texture_unit; - static GLint _max_texture_units; - static std::map<std::string, GLint> _texture_unit_pool; - static GLint getTextureUnit(const std::string& name); + static GLint _max_texture_units; + static GLint getTextureUnit(const std::string& name); }; + } } diff --git a/src/main.cpp b/src/main.cpp index 411ee93..e54d2c2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,7 +8,7 @@ #include "3rdparty/luax/luax.h" #include "script/luaopen_jin.h" -#include "libjin/fs/filesystem.h" +#include "libjin/jin.h" #include <Windows.h> diff --git a/src/script/graphics/luaopen_graphics.cpp b/src/script/graphics/luaopen_graphics.cpp index 4f61023..80acc94 100644 --- a/src/script/graphics/luaopen_graphics.cpp +++ b/src/script/graphics/luaopen_graphics.cpp @@ -51,7 +51,7 @@ namespace lua Window* wnd = Window::get(); wnd->init(w, h, t); - // set default blend method + // set default blend method glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |