#include <stdlib.h>#include <stdio.h>#include <stdbool.h>#include <lua.h>#include <lauxlib.h>#include <SDL/SDL.h>#ifdef _WIN32#include <windows.h>#endif#include <GL/gl.h>#include <FTGL/ftgl.h>static void ololo(lua_State *L){ lua_newtable(L); /* We will pass a table */ /* * To put values into the table, we first push the index, then the * value, and then call lua_rawset() with the index of the table in the * stack. Let's see why it's -3: In Lua, the value -1 always refers to * the top of the stack. When you create the table with lua_newtable(), * the table gets pushed into the top of the stack. When you push the * index and then the cell value, the stack looks like: * * <- [stack bottom] -- table, index, value [top] * * So the -1 will refer to the cell value, thus -3 is used to refer to * the table itself. Note that lua_rawset() pops the two last elements * of the stack, so that after it has been called, the table is at the * top of the stack. */ for (int i = 1; i <= 5; i++) { lua_pushnumber(L, i); /* Push the table index */ lua_pushnumber(L, i*2); /* Push the cell value */ lua_rawset(L, -3); /* Stores the pair in the table */ } /* By what name is the script going to reference our table? */ lua_setglobal(L, "foo");}void draw_triangle(float theta){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f,0.0f,0.0f); glRotatef(theta, 0.0f, 0.0f, 1.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.0f, 1.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(0.87f, -0.5f); glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-0.87f, -0.5f); glEnd();}void draw_text(char *text){ /* Create a pixmap font from a TrueType file. */ FTGLfont *font = ftglCreatePixmapFont("assets/verdana.ttf"); /* If something went wrong, bail out. */ if(!font){ printf("cant load font"); exit(-1); } /* Set the font size and render a small text. */ ftglSetFontFaceSize(font, 72, 72); ftglRenderFont(font, text, FTGL_RENDER_ALL); /* Destroy the font object. */ /* ftglDestroyFont(font); */}int main(int argc, char *argv[]){ SDL_Event event; bool quit; //SDL_Init(SDL_INIT_EVERYTHING); draw_loop(); while(!quit){ printf("asdasd"); if (SDL_PollEvent(&event)){ printf("fuck yeah"); printf(event.type); switch(event.type){ case SDL_KEYDOWN: case SDL_KEYUP: break; case SDL_QUIT: quit = true; break; default: break; } } else { printf("А вот хуй\n"); } } //SDL_Quit(); //exit(0);}void draw_loop() { int status, result; double sum; lua_State *L; L = luaL_newstate(); luaL_openlibs(L); /* Load the file containing the script we are going to run */ status = luaL_loadfile(L, "scripts/script.lua"); if (status) { /* If something went wrong, error message is at the top of */ /* the stack */ fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1)); exit(1); } ololo(L); /* Ask Lua to run our little script */ result = lua_pcall(L, 0, LUA_MULTRET, 0); if (result) { fprintf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1)); exit(1); } /* Get the returned value at the top of the stack (index -1) */ sum = lua_tonumber(L, -1); printf("Script returned: %.0f\n", sum); lua_pop(L, 1); /* Take the returned value out of the stack */ lua_close(L); /* Cya, Lua */ SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(400, 400, 32, SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_OPENGL); glViewport(0, 0, 400, 400); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glMatrixMode(GL_PROJECTION); glMatrixMode(GL_MODELVIEW); draw_triangle(0); // TESTVALUE draw_text("ХУИТА"); // TESTVALUE SDL_GL_SwapBuffers(); //getchar();}