From 7b2bb469c13702498a49d6a8a9cf1bd2a4efcfff Mon Sep 17 00:00:00 2001 From: vimene Date: Tue, 21 Nov 2023 03:11:49 +0100 Subject: renamed binary from 'main' to 'engine' --- Makefile.am | 6 +- Makefile.in | 33 ++-- README.md | 2 +- autom4te.cache/output.1 | 2 +- autom4te.cache/output.2 | 2 +- autom4te.cache/output.4 | 2 +- autom4te.cache/requests | 462 +++++++++++++++++++++---------------------- configure | 2 +- configure.ac | 2 +- src/engine.cpp | 510 ++++++++++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 510 ------------------------------------------------ 11 files changed, 767 insertions(+), 766 deletions(-) create mode 100644 src/engine.cpp delete mode 100644 src/main.cpp diff --git a/Makefile.am b/Makefile.am index 2cfe39b..6c8ff00 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,8 +2,8 @@ ACLOCAL_AMFLAGS = -Im4 --install AM_CPPFLAGS = $(DEPS_CFLAGS) -bin_PROGRAMS = main -main_SOURCES = src/chfb.cpp src/chfb.h src/main.cpp src/math_vector.cpp src/math_vector.h src/obj3d.cpp src/obj3d.h src/pixfb.cpp src/pixfb.h src/tri_vertex.cpp src/tri_vertex.h src/vertex.cpp src/vertex_data.cpp src/vertex_data.h src/vertex.h -main_LDADD = $(DEPS_LIBS) +bin_PROGRAMS = engine +engine_SOURCES = src/chfb.cpp src/chfb.h src/engine.cpp src/math_vector.cpp src/math_vector.h src/obj3d.cpp src/obj3d.h src/pixfb.cpp src/pixfb.h src/tri_vertex.cpp src/tri_vertex.h src/vertex.cpp src/vertex_data.cpp src/vertex_data.h src/vertex.h +engine_LDADD = $(DEPS_LIBS) EXTRA_DIST = m4/NOTES diff --git a/Makefile.in b/Makefile.in index 8a57135..920923a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -88,7 +88,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -bin_PROGRAMS = main$(EXEEXT) +bin_PROGRAMS = engine$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/sdl2.m4 \ @@ -106,13 +106,13 @@ CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp -am_main_OBJECTS = src/chfb.$(OBJEXT) src/main.$(OBJEXT) \ +am_engine_OBJECTS = src/chfb.$(OBJEXT) src/engine.$(OBJEXT) \ src/math_vector.$(OBJEXT) src/obj3d.$(OBJEXT) \ src/pixfb.$(OBJEXT) src/tri_vertex.$(OBJEXT) \ src/vertex.$(OBJEXT) src/vertex_data.$(OBJEXT) -main_OBJECTS = $(am_main_OBJECTS) +engine_OBJECTS = $(am_engine_OBJECTS) am__DEPENDENCIES_1 = -main_DEPENDENCIES = $(am__DEPENDENCIES_1) +engine_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -128,7 +128,7 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = src/$(DEPDIR)/chfb.Po src/$(DEPDIR)/main.Po \ +am__depfiles_remade = src/$(DEPDIR)/chfb.Po src/$(DEPDIR)/engine.Po \ src/$(DEPDIR)/math_vector.Po src/$(DEPDIR)/obj3d.Po \ src/$(DEPDIR)/pixfb.Po src/$(DEPDIR)/tri_vertex.Po \ src/$(DEPDIR)/vertex.Po src/$(DEPDIR)/vertex_data.Po @@ -158,8 +158,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(main_SOURCES) -DIST_SOURCES = $(main_SOURCES) +SOURCES = $(engine_SOURCES) +DIST_SOURCES = $(engine_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -323,8 +323,8 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -Im4 --install AM_CPPFLAGS = $(DEPS_CFLAGS) -main_SOURCES = src/chfb.cpp src/chfb.h src/main.cpp src/math_vector.cpp src/math_vector.h src/obj3d.cpp src/obj3d.h src/pixfb.cpp src/pixfb.h src/tri_vertex.cpp src/tri_vertex.h src/vertex.cpp src/vertex_data.cpp src/vertex_data.h src/vertex.h -main_LDADD = $(DEPS_LIBS) +engine_SOURCES = src/chfb.cpp src/chfb.h src/engine.cpp src/math_vector.cpp src/math_vector.h src/obj3d.cpp src/obj3d.h src/pixfb.cpp src/pixfb.h src/tri_vertex.cpp src/tri_vertex.h src/vertex.cpp src/vertex_data.cpp src/vertex_data.h src/vertex.h +engine_LDADD = $(DEPS_LIBS) EXTRA_DIST = m4/NOTES all: all-am @@ -427,7 +427,8 @@ src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/$(DEPDIR) @: > src/$(DEPDIR)/$(am__dirstamp) src/chfb.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) -src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/engine.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) src/math_vector.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/obj3d.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) @@ -439,9 +440,9 @@ src/vertex.$(OBJEXT): src/$(am__dirstamp) \ src/vertex_data.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) -main$(EXEEXT): $(main_OBJECTS) $(main_DEPENDENCIES) $(EXTRA_main_DEPENDENCIES) - @rm -f main$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(main_OBJECTS) $(main_LDADD) $(LIBS) +engine$(EXEEXT): $(engine_OBJECTS) $(engine_DEPENDENCIES) $(EXTRA_engine_DEPENDENCIES) + @rm -f engine$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(engine_OBJECTS) $(engine_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -451,7 +452,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chfb.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/engine.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/math_vector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/obj3d.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pixfb.Po@am__quote@ # am--include-marker @@ -757,7 +758,7 @@ clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f src/$(DEPDIR)/chfb.Po - -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/engine.Po -rm -f src/$(DEPDIR)/math_vector.Po -rm -f src/$(DEPDIR)/obj3d.Po -rm -f src/$(DEPDIR)/pixfb.Po @@ -812,7 +813,7 @@ maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f src/$(DEPDIR)/chfb.Po - -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/engine.Po -rm -f src/$(DEPDIR)/math_vector.Po -rm -f src/$(DEPDIR)/obj3d.Po -rm -f src/$(DEPDIR)/pixfb.Po diff --git a/README.md b/README.md index 674a195..f0533cd 100644 --- a/README.md +++ b/README.md @@ -21,4 +21,4 @@ While inside the directory containing all files: Usage: - src/main + ./engine diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1 index c5a9955..f391009 100644 --- a/autom4te.cache/output.1 +++ b/autom4te.cache/output.1 @@ -612,7 +612,7 @@ PACKAGE_STRING='engine alpha' PACKAGE_BUGREPORT='' PACKAGE_URL='' -ac_unique_file="src/tri_vertex.cpp" +ac_unique_file="src/engine.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include diff --git a/autom4te.cache/output.2 b/autom4te.cache/output.2 index e615d7f..0b7a030 100644 --- a/autom4te.cache/output.2 +++ b/autom4te.cache/output.2 @@ -612,7 +612,7 @@ PACKAGE_STRING='engine alpha' PACKAGE_BUGREPORT='' PACKAGE_URL='' -ac_unique_file="src/tri_vertex.cpp" +ac_unique_file="src/engine.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include diff --git a/autom4te.cache/output.4 b/autom4te.cache/output.4 index c5a9955..f391009 100644 --- a/autom4te.cache/output.4 +++ b/autom4te.cache/output.4 @@ -612,7 +612,7 @@ PACKAGE_STRING='engine alpha' PACKAGE_BUGREPORT='' PACKAGE_URL='' -ac_unique_file="src/tri_vertex.cpp" +ac_unique_file="src/engine.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include diff --git a/autom4te.cache/requests b/autom4te.cache/requests index 35a2089..8862d2e 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -34,58 +34,58 @@ 'configure.ac' ], { - 'm4_pattern_forbid' => 1, - '_m4_warn' => 1, - 'AM_SET_DEPDIR' => 1, - 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, - 'PKG_CHECK_MODULES_STATIC' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'AM_SET_LEADING_DOT' => 1, - 'AM_RUN_LOG' => 1, - 'AM_PROG_INSTALL_SH' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'PKG_PROG_PKG_CONFIG' => 1, - 'AC_DEFUN' => 1, - 'PKG_HAVE_DEFINE_WITH_MODULES' => 1, - 'PKG_CHECK_EXISTS' => 1, - '_AM_CONFIG_MACRO_DIRS' => 1, - 'include' => 1, 'AM_AUX_DIR_EXPAND' => 1, - 'PKG_CHECK_VAR' => 1, - 'AC_DEFUN_ONCE' => 1, - 'PKG_CHECK_MODULES' => 1, + 'PKG_INSTALLDIR' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_RUN_LOG' => 1, + '_AM_MANGLE_OPTION' => 1, 'AM_INIT_AUTOMAKE' => 1, + 'PKG_CHECK_MODULES' => 1, '_AM_SET_OPTION' => 1, - 'AU_DEFUN' => 1, - '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - '_AM_DEPENDENCIES' => 1, - '_AM_PROG_CC_C_O' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - '_AM_MANGLE_OPTION' => 1, - 'AM_SANITY_CHECK' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_PROG_INSTALL_STRIP' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + 'm4_pattern_allow' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'm4_pattern_forbid' => 1, + 'AC_DEFUN_ONCE' => 1, 'AM_SILENT_RULES' => 1, + 'm4_include' => 1, + 'PKG_HAVE_DEFINE_WITH_MODULES' => 1, 'PKG_WITH_MODULES' => 1, - '_AM_IF_OPTION' => 1, - 'AM_PROG_CC_C_O' => 1, + 'PKG_CHECK_VAR' => 1, + 'AM_MISSING_HAS_RUN' => 1, 'AM_DEP_TRACK' => 1, - 'AM_MAKE_INCLUDE' => 1, - 'PKG_NOARCH_INSTALLDIR' => 1, - '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + 'PKG_PROG_PKG_CONFIG' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + '_AM_AUTOCONF_VERSION' => 1, + '_AM_PROG_CC_C_O' => 1, + '_AM_SET_OPTIONS' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + 'AM_SANITY_CHECK' => 1, + 'AU_DEFUN' => 1, + 'include' => 1, + '_AM_PROG_TAR' => 1, + 'AM_PROG_INSTALL_SH' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, + 'AM_SUBST_NOTMAKE' => 1, 'AM_MISSING_PROG' => 1, - '_AM_SET_OPTIONS' => 1, - 'm4_pattern_allow' => 1, - 'AM_MISSING_HAS_RUN' => 1, - 'PKG_INSTALLDIR' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_IF_OPTION' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'PKG_CHECK_EXISTS' => 1, + '_m4_warn' => 1, + 'AC_DEFUN' => 1, + '_AM_DEPENDENCIES' => 1, + '_AM_SUBST_NOTMAKE' => 1, 'PKG_HAVE_WITH_MODULES' => 1, - 'AM_SUBST_NOTMAKE' => 1, - '_AM_AUTOCONF_VERSION' => 1, - 'm4_include' => 1, + 'PKG_CHECK_MODULES_STATIC' => 1, 'AC_CONFIG_MACRO_DIR' => 1, - '_AM_PROG_TAR' => 1 + 'AM_SET_DEPDIR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'PKG_NOARCH_INSTALLDIR' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -100,69 +100,69 @@ 'configure.ac' ], { - 'AC_REQUIRE_AUX_FILE' => 1, - 'sinclude' => 1, - 'AC_CANONICAL_TARGET' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'm4_pattern_allow' => 1, - 'AM_XGETTEXT_OPTION' => 1, + '_AM_COND_ENDIF' => 1, 'AC_FC_PP_SRCEXT' => 1, - 'AC_INIT' => 1, - 'AC_FC_PP_DEFINE' => 1, - '_AM_COND_IF' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'm4_sinclude' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AM_PROG_CC_C_O' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'LT_INIT' => 1, - 'AC_SUBST' => 1, - 'm4_include' => 1, - 'AC_FC_SRCEXT' => 1, - 'AM_NLS' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AM_POT_TOOLS' => 1, + 'AM_PROG_LIBTOOL' => 1, 'AC_CONFIG_FILES' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_FC_FREEFORM' => 1, 'AC_SUBST_TRACE' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'm4_sinclude' => 1, 'AC_CONFIG_HEADERS' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - '_AM_COND_ENDIF' => 1, + 'AC_PROG_LIBTOOL' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AC_SUBST' => 1, 'AC_CONFIG_LINKS' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + '_AM_COND_ELSE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'sinclude' => 1, 'AC_CONFIG_SUBDIRS' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'include' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AM_PROG_CC_C_O' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_GNU_GETTEXT' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AH_OUTPUT' => 1, 'IT_PROG_INTLTOOL' => 1, + 'AM_PROG_AR' => 1, + 'AM_MAINTAINER_MODE' => 1, 'AM_PROG_MOC' => 1, - 'AC_FC_FREEFORM' => 1, + 'm4_include' => 1, + 'AM_SILENT_RULES' => 1, + 'm4_pattern_forbid' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'AC_LIBSOURCE' => 1, - 'AM_PROG_AR' => 1, - 'GTK_DOC_CHECK' => 1, + '_AM_COND_IF' => 1, + 'm4_pattern_allow' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'LT_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_INIT' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'include' => 1, + 'AM_NLS' => 1, + 'AC_CONFIG_AUX_DIR' => 1, 'AC_CANONICAL_BUILD' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PATH_GUILE' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'LT_SUPPORTED_TAG' => 1, - 'AC_PROG_LIBTOOL' => 1, - '_m4_warn' => 1, - 'm4_pattern_forbid' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_CONDITIONAL' => 1, - 'AH_OUTPUT' => 1, 'AM_PROG_CXX_C_O' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AM_PROG_FC_C_O' => 1, - '_AM_COND_ELSE' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AM_INIT_AUTOMAKE' => 1 + 'AM_PROG_MKDIR_P' => 1, + 'AM_XGETTEXT_OPTION' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -178,69 +178,69 @@ 'configure.ac' ], { - 'AM_GNU_GETTEXT' => 1, - '_AM_COND_ELSE' => 1, - 'AM_INIT_AUTOMAKE' => 1, + 'AC_CONFIG_FILES' => 1, 'AM_PROG_LIBTOOL' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AH_OUTPUT' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_PROG_AR' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_CANONICAL_BUILD' => 1, + 'AC_FC_PP_SRCEXT' => 1, + '_AM_COND_ENDIF' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'm4_sinclude' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST_TRACE' => 1, + 'AC_FC_FREEFORM' => 1, 'GTK_DOC_CHECK' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'm4_pattern_forbid' => 1, '_m4_warn' => 1, - 'AC_PROG_LIBTOOL' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_SUBST' => 1, '_AM_SUBST_NOTMAKE' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'AC_LIBSOURCE' => 1, - 'AC_FC_FREEFORM' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - '_LT_AC_TAGCONFIG' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_GNU_GETTEXT' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'sinclude' => 1, 'AC_CONFIG_SUBDIRS' => 1, - 'include' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_AR' => 1, 'IT_PROG_INTLTOOL' => 1, - 'AM_PROG_MOC' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AC_CONFIG_LINKS' => 1, - '_AM_COND_ENDIF' => 1, - 'AC_CONFIG_FILES' => 1, + 'AH_OUTPUT' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AM_INIT_AUTOMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, 'AM_POT_TOOLS' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_SUBST_TRACE' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_SUBST' => 1, - 'AM_NLS' => 1, 'AC_FC_SRCEXT' => 1, + 'm4_pattern_allow' => 1, + '_AM_COND_IF' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'm4_pattern_forbid' => 1, 'm4_include' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AM_PROG_CC_C_O' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_MOC' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, 'LT_INIT' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'm4_sinclude' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_FC_PP_SRCEXT' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_MKDIR_P' => 1, 'AM_XGETTEXT_OPTION' => 1, - 'AC_FC_PP_DEFINE' => 1, - 'AC_INIT' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AM_PATH_GUILE' => 1, 'AM_PROG_F77_C_O' => 1, - '_AM_COND_IF' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'm4_pattern_allow' => 1, - 'sinclude' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'AC_CANONICAL_TARGET' => 1 + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_NLS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'include' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -258,69 +258,69 @@ 'configure.ac' ], { - 'm4_include' => 1, - 'AC_FC_SRCEXT' => 1, - 'AM_NLS' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AC_SUBST' => 1, - 'AC_CONFIG_LINKS' => 1, - '_AM_COND_ENDIF' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AM_PATH_GUILE' => 1, - 'AM_POT_TOOLS' => 1, - 'AC_CONFIG_FILES' => 1, + 'AC_FC_FREEFORM' => 1, + 'GTK_DOC_CHECK' => 1, + 'm4_sinclude' => 1, 'AC_CONFIG_HEADERS' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, 'AC_SUBST_TRACE' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AC_INIT' => 1, - 'AC_FC_PP_DEFINE' => 1, - '_AM_COND_IF' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AM_XGETTEXT_OPTION' => 1, + '_AM_COND_ENDIF' => 1, + 'AC_CONFIG_FILES' => 1, + 'AM_PROG_LIBTOOL' => 1, 'AC_FC_PP_SRCEXT' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AM_ENABLE_MULTILIB' => 1, 'AC_CANONICAL_TARGET' => 1, - 'm4_pattern_allow' => 1, + 'AC_CANONICAL_SYSTEM' => 1, 'sinclude' => 1, 'LT_CONFIG_LTDL_DIR' => 1, - 'LT_INIT' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AC_CANONICAL_HOST' => 1, - 'm4_sinclude' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AH_OUTPUT' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_INIT_AUTOMAKE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, '_AM_COND_ELSE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, 'AM_GNU_GETTEXT' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AC_FC_FREEFORM' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'include' => 1, - 'IT_PROG_INTLTOOL' => 1, - 'AM_PROG_MOC' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'LT_SUPPORTED_TAG' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_CC_C_O' => 1, 'AC_PROG_LIBTOOL' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AC_SUBST' => 1, '_m4_warn' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AM_MAINTAINER_MODE' => 1, + '_AM_COND_IF' => 1, + 'm4_pattern_allow' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_SILENT_RULES' => 1, + 'm4_include' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, 'm4_pattern_forbid' => 1, + 'AM_PROG_MOC' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_CANONICAL_HOST' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_POT_TOOLS' => 1, 'AM_PROG_AR' => 1, - 'GTK_DOC_CHECK' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AH_OUTPUT' => 1, + 'AM_PROG_F77_C_O' => 1, 'AC_CANONICAL_BUILD' => 1, - 'AC_LIBSOURCE' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'include' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AM_NLS' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'LT_SUPPORTED_TAG' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - '_AM_SUBST_NOTMAKE' => 1 + 'AM_PATH_GUILE' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'LT_INIT' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_INIT' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -355,59 +355,59 @@ 'configure.ac' ], { - 'PKG_WITH_MODULES' => 1, - '_AM_IF_OPTION' => 1, - 'AM_PROG_INSTALL_STRIP' => 1, + '_AM_SET_OPTION' => 1, + 'm4_pattern_allow' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'm4_pattern_forbid' => 1, 'AM_SILENT_RULES' => 1, - 'AM_SANITY_CHECK' => 1, + 'AC_DEFUN_ONCE' => 1, + 'm4_include' => 1, + 'PKG_HAVE_DEFINE_WITH_MODULES' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + 'AM_PATH_SDL2' => 1, + 'PKG_INSTALLDIR' => 1, + 'AM_MAKE_INCLUDE' => 1, 'AM_CONDITIONAL' => 1, '_AM_MANGLE_OPTION' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - '_AM_PROG_CC_C_O' => 1, - '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - '_AM_DEPENDENCIES' => 1, + 'AM_RUN_LOG' => 1, + 'PKG_CHECK_MODULES' => 1, 'AM_INIT_AUTOMAKE' => 1, - '_AM_SET_OPTION' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AU_DEFUN' => 1, - 'AC_DEFUN_ONCE' => 1, - 'PKG_CHECK_MODULES' => 1, - 'PKG_HAVE_DEFINE_WITH_MODULES' => 1, + 'AM_SANITY_CHECK' => 1, '_AM_CONFIG_MACRO_DIRS' => 1, - 'PKG_CHECK_EXISTS' => 1, - 'AM_AUX_DIR_EXPAND' => 1, 'include' => 1, + 'PKG_WITH_MODULES' => 1, 'PKG_CHECK_VAR' => 1, - 'AC_DEFUN' => 1, + 'AM_MISSING_HAS_RUN' => 1, + 'AM_DEP_TRACK' => 1, 'PKG_PROG_PKG_CONFIG' => 1, - 'AM_SET_LEADING_DOT' => 1, - 'AM_RUN_LOG' => 1, - 'AM_PROG_INSTALL_SH' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'PKG_CHECK_MODULES_STATIC' => 1, - 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - '_m4_warn' => 1, - 'm4_pattern_forbid' => 1, - 'AM_SET_DEPDIR' => 1, - '_AM_PROG_TAR' => 1, - 'm4_include' => 1, - 'AC_CONFIG_MACRO_DIR' => 1, - 'AM_SUBST_NOTMAKE' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + '_AM_PROG_CC_C_O' => 1, '_AM_AUTOCONF_VERSION' => 1, - 'PKG_HAVE_WITH_MODULES' => 1, - 'AM_PATH_SDL2' => 1, - 'PKG_INSTALLDIR' => 1, '_AM_SET_OPTIONS' => 1, - 'AM_MISSING_HAS_RUN' => 1, - 'm4_pattern_allow' => 1, + 'AM_SUBST_NOTMAKE' => 1, 'AM_MISSING_PROG' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_IF_OPTION' => 1, + '_AM_PROG_TAR' => 1, + 'AM_PROG_INSTALL_SH' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, - '_PKG_SHORT_ERRORS_SUPPORTED' => 1, - 'PKG_NOARCH_INSTALLDIR' => 1, - 'AM_DEP_TRACK' => 1, + 'PKG_CHECK_MODULES_STATIC' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AM_SET_DEPDIR' => 1, 'AM_PROG_CC_C_O' => 1, - 'AM_MAKE_INCLUDE' => 1 + 'AM_AUTOMAKE_VERSION' => 1, + 'PKG_NOARCH_INSTALLDIR' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'PKG_CHECK_EXISTS' => 1, + '_m4_warn' => 1, + 'AC_DEFUN' => 1, + '_AM_DEPENDENCIES' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'PKG_HAVE_WITH_MODULES' => 1 } ], 'Autom4te::Request' ) ); diff --git a/configure b/configure index bf33016..25a5f9a 100755 --- a/configure +++ b/configure @@ -612,7 +612,7 @@ PACKAGE_STRING='engine alpha' PACKAGE_BUGREPORT='' PACKAGE_URL='' -ac_unique_file="src/tri_vertex.cpp" +ac_unique_file="src/engine.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include diff --git a/configure.ac b/configure.ac index 3771943..177f614 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.71]) AC_INIT([engine], [alpha]) -AC_CONFIG_SRCDIR([src/tri_vertex.cpp]) +AC_CONFIG_SRCDIR([src/engine.cpp]) AC_CONFIG_HEADERS([src/config.h]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/src/engine.cpp b/src/engine.cpp new file mode 100644 index 0000000..840d2f9 --- /dev/null +++ b/src/engine.cpp @@ -0,0 +1,510 @@ +#include "config.h" +#include + +#ifdef ENABLE_NCURSES +#include +#endif + +#ifdef __WINDOWS__ +#include +#endif + +#include +#include +#include +#include +#include "chfb.h" +#include "pixfb.h" +#include "obj3d.h" +#include "math_vector.h" +#include "vertex.h" +#include "vertex_data.h" +#include "tri_vertex.h" + +#define MKEY_Z 122 +#define MKEY_Q 113 +#define MKEY_S 115 +#define MKEY_D 100 + +#define MKEY_ESC 27 + +#define FPS 60 + +#define PI 3.1415926535f + +#ifdef ENABLE_NCURSES +void main_term() { + // init + setlocale(LC_ALL, ""); + initscr(); + cbreak(); + noecho(); + intrflush(stdscr, FALSE); + keypad(stdscr, TRUE); + set_escdelay(0); + curs_set(0); + + int w, h; + getmaxyx(stdscr, h, w); + CharacterFrameBuffer cfb{static_cast(w), static_cast(h)}; + + MathVector3 a{0.f, 0.f, 0.f}; + float dist = 4.f; + while (1) { + //timeout(1000 / FPS); + timeout(10); + int c = getch(); + + if (c == MKEY_ESC) break; + switch (c) { + case KEY_UP: + // a.x += 0.1f; + dist += .1f; + break; + case KEY_DOWN: + // a.x -= 0.1f; + dist -= .1f; + break; + case KEY_LEFT: + // a.y += 0.1f; + break; + case KEY_RIGHT: + // a.y -= 0.1f; + break; + case MKEY_Q: + // a.z += 0.1f; + break; + case MKEY_D: + // a.z -= 0.1f; + break; + } + + a.x += .0050f; + a.y += .0065f; + a.z += .0080f; + + getmaxyx(stdscr, h, w); + cfb.resize(static_cast(w), static_cast(h)); + + float rad = 5.f; + MathVector3 ca{std::cos(a.x), std::cos(a.y), std::cos(a.z)}; + MathVector3 sa{std::sin(a.x), std::sin(a.y), std::sin(a.z)}; + + std::array rot_x = {{ + { 1.f, 0.f, 0.f }, + { 0.f, ca.x, sa.x }, + { 0.f, -sa.x, ca.x }, + }}; + std::array rot_y = {{ + { ca.y, 0.f, -sa.y }, + { 0.f, 1.f, 0.f }, + { sa.y, 0.f, ca.y }, + }}; + std::array rot_z = {{ + { ca.z, sa.z, 0.f }, + { -sa.z, ca.z, 0.f }, + { 0.f, 0.f, 1.f }, + }}; + + auto [e_x, e_y, e_z] = rot_x; + e_x = e_x.x * rot_y[0] + e_x.y * rot_y[1] + e_x.z * rot_y[2]; + e_y = e_y.x * rot_y[0] + e_y.y * rot_y[1] + e_y.z * rot_y[2]; + e_z = e_z.x * rot_y[0] + e_z.y * rot_y[1] + e_z.z * rot_y[2]; + e_x = e_x.x * rot_z[0] + e_x.y * rot_z[1] + e_x.z * rot_z[2]; + e_y = e_y.x * rot_z[0] + e_y.y * rot_z[1] + e_y.z * rot_z[2]; + e_z = e_z.x * rot_z[0] + e_z.y * rot_z[1] + e_z.z * rot_z[2]; + + std::array objs{{ + { + { + { + rad * (-e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + } + }, + { + // face 1 + { 0, 2, 3 }, + { 0, 3, 1 }, + + // face 2 + { 0, 4, 6 }, + { 0, 6, 2 }, + + // face 3 + { 0, 1, 5 }, + { 0, 5, 4 }, + + // face 4 + { 7, 6, 4 }, + { 7, 4, 5 }, + + // face 5 + { 7, 3, 2 }, + { 7, 2, 6 }, + + // face 6 + { 7, 5, 1 }, + { 7, 1, 3 }, + } + }, + { + { + { + rad * (-e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + } + }, + { + // face 1 + { 0, 2, 3 }, + { 0, 3, 1 }, + + // face 2 + { 0, 4, 6 }, + { 0, 6, 2 }, + + // face 3 + { 0, 1, 5 }, + { 0, 5, 4 }, + + // face 4 + { 7, 6, 4 }, + { 7, 4, 5 }, + + // face 5 + { 7, 3, 2 }, + { 7, 2, 6 }, + + // face 6 + { 7, 5, 1 }, + { 7, 1, 3 }, + } + } + }}; + cfb.clear(); + float min_z = 2.f, max_z = 50.f; + float fac_for_aspect_ratio = 2.f * static_cast(cfb.height()) / static_cast(cfb.width()); + for (auto obj : objs) { + for (auto triangle : obj) { + TriangleVertex4 t{triangle}; + + // should be multiplied by a matrix, temporary replacement + t.vertex1.point.x *= fac_for_aspect_ratio; + t.vertex1.point.y = -t.vertex1.point.y; + t.vertex1.point.w = -t.vertex1.point.z; + t.vertex1.point.z = 2.f * (-t.vertex1.point.z - min_z) / (max_z - min_z) - 1.f; + t.vertex2.point.x *= fac_for_aspect_ratio; + t.vertex2.point.y = -t.vertex2.point.y; + t.vertex2.point.w = -t.vertex2.point.z; + t.vertex2.point.z = 2.f * (-t.vertex2.point.z - min_z) / (max_z - min_z) - 1.f; + t.vertex3.point.x *= fac_for_aspect_ratio; + t.vertex3.point.y = -t.vertex3.point.y; + t.vertex3.point.w = -t.vertex3.point.z; + t.vertex3.point.z = 2.f * (-t.vertex3.point.z - min_z) / (max_z - min_z) - 1.f; + + cfb.draw_triangle(t); + } + } + mvaddnstr(0, 0, cfb.chars(), cfb.width() * cfb.height()); + } + + // terminate + endwin(); +} +#endif + +#define SCREEN_WIDTH 640 +#define SCREEN_HEIGHT 480 + +void main_SDL() { + SDL_Window* window = NULL; + SDL_Renderer* renderer = NULL; + SDL_Texture* texture = NULL; + + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + fprintf(stderr, "Error: SDL_Init error: %s\n", SDL_GetError()); + return; + } + window = SDL_CreateWindow("Engine", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); + if (window == NULL) { + fprintf(stderr, "Error: SDL_CreateWindow error: %s\n", SDL_GetError()); + return; + } + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, SCREEN_WIDTH, SCREEN_HEIGHT); + PixelFrameBuffer pfb{SCREEN_WIDTH, SCREEN_HEIGHT}; + + MathVector3 a{0.f, 0.f, 0.f}; + float dist = 4.f; + SDL_Event e; + bool quit = false; + while (!quit) { + a.x += .0050f; + a.y += .0065f; + a.z += .0080f; + + float rad = 5.f; + MathVector3 ca{std::cos(a.x), std::cos(a.y), std::cos(a.z)}; + MathVector3 sa{std::sin(a.x), std::sin(a.y), std::sin(a.z)}; + + std::array rot_x = {{ + { 1.f, 0.f, 0.f }, + { 0.f, ca.x, sa.x }, + { 0.f, -sa.x, ca.x }, + }}; + std::array rot_y = {{ + { ca.y, 0.f, -sa.y }, + { 0.f, 1.f, 0.f }, + { sa.y, 0.f, ca.y }, + }}; + std::array rot_z = {{ + { ca.z, sa.z, 0.f }, + { -sa.z, ca.z, 0.f }, + { 0.f, 0.f, 1.f }, + }}; + + auto [e_x, e_y, e_z] = rot_x; + e_x = e_x.x * rot_y[0] + e_x.y * rot_y[1] + e_x.z * rot_y[2]; + e_y = e_y.x * rot_y[0] + e_y.y * rot_y[1] + e_y.z * rot_y[2]; + e_z = e_z.x * rot_y[0] + e_z.y * rot_y[1] + e_z.z * rot_y[2]; + e_x = e_x.x * rot_z[0] + e_x.y * rot_z[1] + e_x.z * rot_z[2]; + e_y = e_y.x * rot_z[0] + e_y.y * rot_z[1] + e_y.z * rot_z[2]; + e_z = e_z.x * rot_z[0] + e_z.y * rot_z[1] + e_z.z * rot_z[2]; + + std::array objs{{ + { + { + { + rad * (-e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + } + }, + { + // face 1 + { 0, 2, 3 }, + { 0, 3, 1 }, + + // face 2 + { 0, 4, 6 }, + { 0, 6, 2 }, + + // face 3 + { 0, 1, 5 }, + { 0, 5, 4 }, + + // face 4 + { 7, 6, 4 }, + { 7, 4, 5 }, + + // face 5 + { 7, 3, 2 }, + { 7, 2, 6 }, + + // face 6 + { 7, 5, 1 }, + { 7, 1, 3 }, + } + }, + { + { + { + rad * (-e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (-e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + }, + { + rad * (+e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, + {} + } + }, + { + // face 1 + { 0, 2, 3 }, + { 0, 3, 1 }, + + // face 2 + { 0, 4, 6 }, + { 0, 6, 2 }, + + // face 3 + { 0, 1, 5 }, + { 0, 5, 4 }, + + // face 4 + { 7, 6, 4 }, + { 7, 4, 5 }, + + // face 5 + { 7, 3, 2 }, + { 7, 2, 6 }, + + // face 6 + { 7, 5, 1 }, + { 7, 1, 3 }, + } + } + }}; + pfb.clear(); + float min_z = 2.f, max_z = 50.f; + float fac_for_aspect_ratio = 2.f * static_cast(pfb.height()) / static_cast(pfb.width()); + for (auto obj : objs) { + for (auto triangle : obj) { + TriangleVertex4 t{triangle}; + + // should be multiplied by a matrix, temporary replacement + t.vertex1.point.x *= fac_for_aspect_ratio; + t.vertex1.point.y = -t.vertex1.point.y; + t.vertex1.point.w = -t.vertex1.point.z; + t.vertex1.point.z = 2.f * (-t.vertex1.point.z - min_z) / (max_z - min_z) - 1.f; + t.vertex2.point.x *= fac_for_aspect_ratio; + t.vertex2.point.y = -t.vertex2.point.y; + t.vertex2.point.w = -t.vertex2.point.z; + t.vertex2.point.z = 2.f * (-t.vertex2.point.z - min_z) / (max_z - min_z) - 1.f; + t.vertex3.point.x *= fac_for_aspect_ratio; + t.vertex3.point.y = -t.vertex3.point.y; + t.vertex3.point.w = -t.vertex3.point.z; + t.vertex3.point.z = 2.f * (-t.vertex3.point.z - min_z) / (max_z - min_z) - 1.f; + + pfb.draw_triangle(t); + } + } + SDL_UpdateTexture(texture, NULL, pfb.pixels(), SCREEN_WIDTH * 4); + SDL_RenderClear(renderer); + SDL_RenderCopy(renderer, texture, NULL, NULL); + SDL_RenderPresent(renderer); + SDL_UpdateWindowSurface(window); + while (SDL_WaitEventTimeout(&e, 10)) { + if (e.type == SDL_QUIT) { + quit = true; + } + } + } + SDL_DestroyTexture(texture); + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); +} + +#ifdef __WINDOWS__ +int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { + (void) hInstance; + (void) hPrevInstance; + (void) pCmdLine; + (void) nCmdShow; +#else +int main(int argc, char *argv[]) { + (void) argc; + (void) argv; +#endif + // main_term(); + main_SDL(); + return EXIT_SUCCESS; +} diff --git a/src/main.cpp b/src/main.cpp deleted file mode 100644 index 840d2f9..0000000 --- a/src/main.cpp +++ /dev/null @@ -1,510 +0,0 @@ -#include "config.h" -#include - -#ifdef ENABLE_NCURSES -#include -#endif - -#ifdef __WINDOWS__ -#include -#endif - -#include -#include -#include -#include -#include "chfb.h" -#include "pixfb.h" -#include "obj3d.h" -#include "math_vector.h" -#include "vertex.h" -#include "vertex_data.h" -#include "tri_vertex.h" - -#define MKEY_Z 122 -#define MKEY_Q 113 -#define MKEY_S 115 -#define MKEY_D 100 - -#define MKEY_ESC 27 - -#define FPS 60 - -#define PI 3.1415926535f - -#ifdef ENABLE_NCURSES -void main_term() { - // init - setlocale(LC_ALL, ""); - initscr(); - cbreak(); - noecho(); - intrflush(stdscr, FALSE); - keypad(stdscr, TRUE); - set_escdelay(0); - curs_set(0); - - int w, h; - getmaxyx(stdscr, h, w); - CharacterFrameBuffer cfb{static_cast(w), static_cast(h)}; - - MathVector3 a{0.f, 0.f, 0.f}; - float dist = 4.f; - while (1) { - //timeout(1000 / FPS); - timeout(10); - int c = getch(); - - if (c == MKEY_ESC) break; - switch (c) { - case KEY_UP: - // a.x += 0.1f; - dist += .1f; - break; - case KEY_DOWN: - // a.x -= 0.1f; - dist -= .1f; - break; - case KEY_LEFT: - // a.y += 0.1f; - break; - case KEY_RIGHT: - // a.y -= 0.1f; - break; - case MKEY_Q: - // a.z += 0.1f; - break; - case MKEY_D: - // a.z -= 0.1f; - break; - } - - a.x += .0050f; - a.y += .0065f; - a.z += .0080f; - - getmaxyx(stdscr, h, w); - cfb.resize(static_cast(w), static_cast(h)); - - float rad = 5.f; - MathVector3 ca{std::cos(a.x), std::cos(a.y), std::cos(a.z)}; - MathVector3 sa{std::sin(a.x), std::sin(a.y), std::sin(a.z)}; - - std::array rot_x = {{ - { 1.f, 0.f, 0.f }, - { 0.f, ca.x, sa.x }, - { 0.f, -sa.x, ca.x }, - }}; - std::array rot_y = {{ - { ca.y, 0.f, -sa.y }, - { 0.f, 1.f, 0.f }, - { sa.y, 0.f, ca.y }, - }}; - std::array rot_z = {{ - { ca.z, sa.z, 0.f }, - { -sa.z, ca.z, 0.f }, - { 0.f, 0.f, 1.f }, - }}; - - auto [e_x, e_y, e_z] = rot_x; - e_x = e_x.x * rot_y[0] + e_x.y * rot_y[1] + e_x.z * rot_y[2]; - e_y = e_y.x * rot_y[0] + e_y.y * rot_y[1] + e_y.z * rot_y[2]; - e_z = e_z.x * rot_y[0] + e_z.y * rot_y[1] + e_z.z * rot_y[2]; - e_x = e_x.x * rot_z[0] + e_x.y * rot_z[1] + e_x.z * rot_z[2]; - e_y = e_y.x * rot_z[0] + e_y.y * rot_z[1] + e_y.z * rot_z[2]; - e_z = e_z.x * rot_z[0] + e_z.y * rot_z[1] + e_z.z * rot_z[2]; - - std::array objs{{ - { - { - { - rad * (-e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - } - }, - { - // face 1 - { 0, 2, 3 }, - { 0, 3, 1 }, - - // face 2 - { 0, 4, 6 }, - { 0, 6, 2 }, - - // face 3 - { 0, 1, 5 }, - { 0, 5, 4 }, - - // face 4 - { 7, 6, 4 }, - { 7, 4, 5 }, - - // face 5 - { 7, 3, 2 }, - { 7, 2, 6 }, - - // face 6 - { 7, 5, 1 }, - { 7, 1, 3 }, - } - }, - { - { - { - rad * (-e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - } - }, - { - // face 1 - { 0, 2, 3 }, - { 0, 3, 1 }, - - // face 2 - { 0, 4, 6 }, - { 0, 6, 2 }, - - // face 3 - { 0, 1, 5 }, - { 0, 5, 4 }, - - // face 4 - { 7, 6, 4 }, - { 7, 4, 5 }, - - // face 5 - { 7, 3, 2 }, - { 7, 2, 6 }, - - // face 6 - { 7, 5, 1 }, - { 7, 1, 3 }, - } - } - }}; - cfb.clear(); - float min_z = 2.f, max_z = 50.f; - float fac_for_aspect_ratio = 2.f * static_cast(cfb.height()) / static_cast(cfb.width()); - for (auto obj : objs) { - for (auto triangle : obj) { - TriangleVertex4 t{triangle}; - - // should be multiplied by a matrix, temporary replacement - t.vertex1.point.x *= fac_for_aspect_ratio; - t.vertex1.point.y = -t.vertex1.point.y; - t.vertex1.point.w = -t.vertex1.point.z; - t.vertex1.point.z = 2.f * (-t.vertex1.point.z - min_z) / (max_z - min_z) - 1.f; - t.vertex2.point.x *= fac_for_aspect_ratio; - t.vertex2.point.y = -t.vertex2.point.y; - t.vertex2.point.w = -t.vertex2.point.z; - t.vertex2.point.z = 2.f * (-t.vertex2.point.z - min_z) / (max_z - min_z) - 1.f; - t.vertex3.point.x *= fac_for_aspect_ratio; - t.vertex3.point.y = -t.vertex3.point.y; - t.vertex3.point.w = -t.vertex3.point.z; - t.vertex3.point.z = 2.f * (-t.vertex3.point.z - min_z) / (max_z - min_z) - 1.f; - - cfb.draw_triangle(t); - } - } - mvaddnstr(0, 0, cfb.chars(), cfb.width() * cfb.height()); - } - - // terminate - endwin(); -} -#endif - -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 - -void main_SDL() { - SDL_Window* window = NULL; - SDL_Renderer* renderer = NULL; - SDL_Texture* texture = NULL; - - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "Error: SDL_Init error: %s\n", SDL_GetError()); - return; - } - window = SDL_CreateWindow("Engine", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); - if (window == NULL) { - fprintf(stderr, "Error: SDL_CreateWindow error: %s\n", SDL_GetError()); - return; - } - renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); - texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, SCREEN_WIDTH, SCREEN_HEIGHT); - PixelFrameBuffer pfb{SCREEN_WIDTH, SCREEN_HEIGHT}; - - MathVector3 a{0.f, 0.f, 0.f}; - float dist = 4.f; - SDL_Event e; - bool quit = false; - while (!quit) { - a.x += .0050f; - a.y += .0065f; - a.z += .0080f; - - float rad = 5.f; - MathVector3 ca{std::cos(a.x), std::cos(a.y), std::cos(a.z)}; - MathVector3 sa{std::sin(a.x), std::sin(a.y), std::sin(a.z)}; - - std::array rot_x = {{ - { 1.f, 0.f, 0.f }, - { 0.f, ca.x, sa.x }, - { 0.f, -sa.x, ca.x }, - }}; - std::array rot_y = {{ - { ca.y, 0.f, -sa.y }, - { 0.f, 1.f, 0.f }, - { sa.y, 0.f, ca.y }, - }}; - std::array rot_z = {{ - { ca.z, sa.z, 0.f }, - { -sa.z, ca.z, 0.f }, - { 0.f, 0.f, 1.f }, - }}; - - auto [e_x, e_y, e_z] = rot_x; - e_x = e_x.x * rot_y[0] + e_x.y * rot_y[1] + e_x.z * rot_y[2]; - e_y = e_y.x * rot_y[0] + e_y.y * rot_y[1] + e_y.z * rot_y[2]; - e_z = e_z.x * rot_y[0] + e_z.y * rot_y[1] + e_z.z * rot_y[2]; - e_x = e_x.x * rot_z[0] + e_x.y * rot_z[1] + e_x.z * rot_z[2]; - e_y = e_y.x * rot_z[0] + e_y.y * rot_z[1] + e_y.z * rot_z[2]; - e_z = e_z.x * rot_z[0] + e_z.y * rot_z[1] + e_z.z * rot_z[2]; - - std::array objs{{ - { - { - { - rad * (-e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + -e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + +e_z - .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - } - }, - { - // face 1 - { 0, 2, 3 }, - { 0, 3, 1 }, - - // face 2 - { 0, 4, 6 }, - { 0, 6, 2 }, - - // face 3 - { 0, 1, 5 }, - { 0, 5, 4 }, - - // face 4 - { 7, 6, 4 }, - { 7, 4, 5 }, - - // face 5 - { 7, 3, 2 }, - { 7, 2, 6 }, - - // face 6 - { 7, 5, 1 }, - { 7, 1, 3 }, - } - }, - { - { - { - rad * (-e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + -e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + -e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (-e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - }, - { - rad * (+e_x + +e_y + +e_z + .5f * (e_x + e_y + e_z)) - dist * rad * MathVector3{0.f, 0.f, 1.f}, - {} - } - }, - { - // face 1 - { 0, 2, 3 }, - { 0, 3, 1 }, - - // face 2 - { 0, 4, 6 }, - { 0, 6, 2 }, - - // face 3 - { 0, 1, 5 }, - { 0, 5, 4 }, - - // face 4 - { 7, 6, 4 }, - { 7, 4, 5 }, - - // face 5 - { 7, 3, 2 }, - { 7, 2, 6 }, - - // face 6 - { 7, 5, 1 }, - { 7, 1, 3 }, - } - } - }}; - pfb.clear(); - float min_z = 2.f, max_z = 50.f; - float fac_for_aspect_ratio = 2.f * static_cast(pfb.height()) / static_cast(pfb.width()); - for (auto obj : objs) { - for (auto triangle : obj) { - TriangleVertex4 t{triangle}; - - // should be multiplied by a matrix, temporary replacement - t.vertex1.point.x *= fac_for_aspect_ratio; - t.vertex1.point.y = -t.vertex1.point.y; - t.vertex1.point.w = -t.vertex1.point.z; - t.vertex1.point.z = 2.f * (-t.vertex1.point.z - min_z) / (max_z - min_z) - 1.f; - t.vertex2.point.x *= fac_for_aspect_ratio; - t.vertex2.point.y = -t.vertex2.point.y; - t.vertex2.point.w = -t.vertex2.point.z; - t.vertex2.point.z = 2.f * (-t.vertex2.point.z - min_z) / (max_z - min_z) - 1.f; - t.vertex3.point.x *= fac_for_aspect_ratio; - t.vertex3.point.y = -t.vertex3.point.y; - t.vertex3.point.w = -t.vertex3.point.z; - t.vertex3.point.z = 2.f * (-t.vertex3.point.z - min_z) / (max_z - min_z) - 1.f; - - pfb.draw_triangle(t); - } - } - SDL_UpdateTexture(texture, NULL, pfb.pixels(), SCREEN_WIDTH * 4); - SDL_RenderClear(renderer); - SDL_RenderCopy(renderer, texture, NULL, NULL); - SDL_RenderPresent(renderer); - SDL_UpdateWindowSurface(window); - while (SDL_WaitEventTimeout(&e, 10)) { - if (e.type == SDL_QUIT) { - quit = true; - } - } - } - SDL_DestroyTexture(texture); - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(window); - SDL_Quit(); -} - -#ifdef __WINDOWS__ -int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { - (void) hInstance; - (void) hPrevInstance; - (void) pCmdLine; - (void) nCmdShow; -#else -int main(int argc, char *argv[]) { - (void) argc; - (void) argv; -#endif - // main_term(); - main_SDL(); - return EXIT_SUCCESS; -} -- cgit v1.2.3