Thread: [brlcad-commits] SF.net SVN: brlcad:[38921] isst/trunk/sdl
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <eri...@us...> - 2010-04-29 22:14:01
|
Revision: 38921 http://brlcad.svn.sourceforge.net/brlcad/?rev=38921&view=rev Author: erikgreenwald Date: 2010-04-29 22:13:54 +0000 (Thu, 29 Apr 2010) Log Message: ----------- wire in libtie/librender shtuff, break things up a bit Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/main.c Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2010-04-29 20:58:43 UTC (rev 38920) +++ isst/trunk/sdl/Makefile.am 2010-04-29 22:13:54 UTC (rev 38921) @@ -1,5 +1,5 @@ bin_PROGRAMS=isst_sdl isst_sdl_SOURCES=main.c -AM_CFLAGS=${SDL_CFLAGS} -AM_LDFLAGS=${SDL_LIBS} +AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ +AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-04-29 20:58:43 UTC (rev 38920) +++ isst/trunk/sdl/main.c 2010-04-29 22:13:54 UTC (rev 38921) @@ -25,24 +25,51 @@ #include <SDL.h> -int main(int argc, char **argv) -{ - SDL_Surface *screen; - SDL_Event e; +#include <tie/tie.h> +#include <tie/adrt.h> +#include <tie/adrt_struct.h> +#include <tie/camera.h> - SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER); - atexit (SDL_Quit); - /* can we make this resizable? */ - screen = SDL_SetVideoMode (800, 600, 24, SDL_DOUBLEBUF); +struct isst_s { + struct tie_s *tie; + struct render_camera_s camera; + struct camera_tile_s tile; + struct adrt_mesh_s *meshes; + tienet_buffer_t buffer_image; + struct SDL_Rect r; +}; - /* TODO: some stuff to load up geometry and set up the isst buffers */ +struct isst_s * +prep_isst(int argc, const char **argv, SDL_Surface *screen) +{ + struct isst_s *isst; + isst = (struct isst_s *)malloc(sizeof(struct isst_s)); + isst->r.w = isst->tile.size_x = isst->camera.w = screen->w; + isst->r.h = isst->tile.size_y = isst->camera.h = screen->h; + isst->r.x = isst->r.y = isst->tile.orig_x = isst->tile.orig_y = 0; + isst->tile.format = RENDER_CAMERA_BIT_DEPTH_24; + render_camera_init(&isst->camera, bu_avail_cpus()); + isst->camera.type = RENDER_CAMERA_PERSPECTIVE; + isst->camera.fov = 25; + VSETALL(isst->camera.pos.v, -10); + VSETALL(isst->camera.focus.v, 0); + render_phong_init(&isst->camera.render, NULL); + isst->tie = (struct tie_s *)bu_malloc(sizeof(struct tie_s), "tie"); + TIENET_BUFFER_SIZE(isst->buffer_image, 3*screen->w*screen->h); + load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); + return isst; +} - /* main event loop */ +int +do_loop(SDL_Surface *screen, struct isst_s *isst) +{ + SDL_Event e; + while (1) { - /* TODO: ask libtie/librender to fill the isst buffer */ - /* TODO: copy/blit the isst buffer into the sdl screen */ + render_camera_render(&isst->camera, isst->tie, &isst->tile, screen->pixels); + memcpy(screen->pixels, isst->buffer_image.data, screen->w*screen->h*3); SDL_UpdateRect(screen, 0, 0, 0, 0); SDL_WaitEvent (&e); switch (e.type) @@ -63,6 +90,38 @@ } } + +int +main(int argc, char **argv) +{ + SDL_Surface *screen; + struct isst_s *isst; + int w = 800, h = 600, c; + + while((c=getopt(argc, argv, "w:h:")) != -1) { + } + + if(w < 1 || h < 1) { + printf("Bad screen resolution specified\n"); + return EXIT_FAILURE; + } + if(argc < 3) { + printf("Must give .g file and list of tops\n"); + return EXIT_FAILURE; + } + + SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER); + atexit (SDL_Quit); + + /* can we make this resizable? */ + screen = SDL_SetVideoMode (w, h, 24, SDL_DOUBLEBUF); + + isst = prep_isst(argc-1, argv+1, screen); + + /* main event loop */ + return do_loop(screen, isst); +} + /* * Local Variables: * mode: C This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-04-30 20:39:17
|
Revision: 38930 http://brlcad.svn.sourceforge.net/brlcad/?rev=38930&view=rev Author: erikgreenwald Date: 2010-04-30 20:39:10 +0000 (Fri, 30 Apr 2010) Log Message: ----------- break event loop into seperate file Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/main.c Added Paths: ----------- isst/trunk/sdl/event.c isst/trunk/sdl/isst.h Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2010-04-30 20:29:11 UTC (rev 38929) +++ isst/trunk/sdl/Makefile.am 2010-04-30 20:39:10 UTC (rev 38930) @@ -1,5 +1,7 @@ bin_PROGRAMS=isst_sdl -isst_sdl_SOURCES=main.c +isst_sdl_SOURCES=main.c event.c AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ + +noinst_HEADERS = isst.h Added: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c (rev 0) +++ isst/trunk/sdl/event.c 2010-04-30 20:39:10 UTC (rev 38930) @@ -0,0 +1,117 @@ +/* + * ISST + * + * Copyright (c) 2005-2010 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file main.c + * + * top level for SDL version of ISST + * + */ + +#include <stdio.h> +#include <sys/time.h> + +#include <SDL.h> + +#include <tie/tie.h> +#include <tie/adrt.h> +#include <tie/adrt_struct.h> +#include <tie/camera.h> + +#include "isst.h" + + +int +do_loop(struct isst_s *isst) +{ + SDL_Event e; + struct timeval ts[2]; + int fc = 0; + + gettimeofday(ts, NULL); + + while (1) + { + int i; + + isst->buffer_image.ind = 0; + if(isst->ogl) + paint_ogl(isst); + else + paint_sw(isst); + + /* some FPS stuff */ + fc++; + if(fc == 10) { + gettimeofday(ts+1, NULL); + printf(" \r%g FPS", (double)fc/(((double)ts[1].tv_sec+(double)ts[1].tv_usec/(double)1e6) - ((double)ts[0].tv_sec+(double)ts[0].tv_usec/(double)1e6))); + fflush(stdout); + fc=0; + gettimeofday(ts, NULL); + } + + while(SDL_PollEvent (&e)) + switch (e.type) + { + case SDL_VIDEORESIZE: + isst->w = e.resize.w; + isst->h = e.resize.h; + resize_isst(isst); + break; + case SDL_KEYDOWN: + switch (tolower (e.key.keysym.sym)) + { + case 'f': + if(isst->sflags&SDL_FULLSCREEN) + isst->sflags &= ~SDL_FULLSCREEN; + else + isst->sflags |= SDL_FULLSCREEN; + resize_isst(isst); + break; + case 'x': + case 'q': + case SDLK_ESCAPE: + SDL_Quit (); + printf("\n"); + return EXIT_SUCCESS; + break; + /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ + } + case SDL_MOUSEMOTION: + switch(e.motion.state) { + case 1: + /* rotate xrel/yrel */ + break; + case 4: + /* zoom in/out yrel */ + break; + } + + } + } +} + +/* + * Local Variables: + * mode: C + * tab-width: 8 + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: isst/trunk/sdl/event.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h (rev 0) +++ isst/trunk/sdl/isst.h 2010-04-30 20:39:10 UTC (rev 38930) @@ -0,0 +1,57 @@ +/* + * ISST + * + * Copyright (c) 2005-2010 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file isst.h + * + * + */ + + +struct isst_s { + struct tie_s *tie; + struct render_camera_s camera; + struct camera_tile_s tile; + struct adrt_mesh_s *meshes; + tienet_buffer_t buffer_image; + struct SDL_Rect r; + struct SDL_Surface *screen; + int ogl, sflags, w, h; +}; + +void resize_isst(struct isst_s *isst); + +struct isst_s * prep_isst(int argc, const char **argv); + +void paint_ogl(struct isst_s *isst); + +void paint_sw(struct isst_s *isst); + +int do_loop(struct isst_s *isst); + + + +/* + * Local Variables: + * mode: C + * tab-width: 8 + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: isst/trunk/sdl/isst.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-04-30 20:29:11 UTC (rev 38929) +++ isst/trunk/sdl/main.c 2010-04-30 20:39:10 UTC (rev 38930) @@ -53,7 +53,6 @@ isst->r.x = isst->r.y = isst->tile.orig_x = isst->tile.orig_y = 0; isst->tile.format = RENDER_CAMERA_BIT_DEPTH_24; TIENET_BUFFER_SIZE(isst->buffer_image, 3 * isst->w * isst->h); - printf("%dx%d 24 %x\n", isst->w, isst->h, isst->sflags); isst->screen = SDL_SetVideoMode (isst->w, isst->h, 24, isst->sflags); if(isst->screen == NULL) { printf("Failed to generate display context\n"); @@ -81,12 +80,16 @@ void paint_ogl(struct isst_s *isst) { + render_camera_prep(&isst->camera); + render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); } void paint_sw(struct isst_s *isst) { int i; + render_camera_prep(&isst->camera); + render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); for(i=0;i<isst->h;i++) memcpy(isst->screen->pixels + i * isst->screen->pitch, isst->buffer_image.data + i * isst->w * 3, @@ -95,70 +98,6 @@ } int -do_loop(struct isst_s *isst) -{ - SDL_Event e; - struct timeval ts[2]; - int fc = 0; - - gettimeofday(ts, NULL); - - while (1) - { - int i; - - isst->buffer_image.ind = 0; - render_camera_prep(&isst->camera); - render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); - if(isst->ogl) - paint_ogl(isst); - else - paint_sw(isst); - - /* some FPS stuff */ - fc++; - if(fc == 10) { - gettimeofday(ts+1, NULL); - printf(" \r%g FPS", (double)fc/(((double)ts[1].tv_sec+(double)ts[1].tv_usec/(double)1e6) - ((double)ts[0].tv_sec+(double)ts[0].tv_usec/(double)1e6))); - fflush(stdout); - fc=0; - gettimeofday(ts, NULL); - } - - while(SDL_PollEvent (&e)) - switch (e.type) - { - case SDL_VIDEORESIZE: - isst->w = e.resize.w; - isst->h = e.resize.h; - resize_isst(isst); - break; - case SDL_KEYDOWN: - switch (tolower (e.key.keysym.sym)) - { - case 'f': - if(isst->sflags&SDL_FULLSCREEN) - isst->sflags &= ~SDL_FULLSCREEN; - else - isst->sflags |= SDL_FULLSCREEN; - resize_isst(isst); - break; - case 'x': - case 'q': - case SDLK_ESCAPE: - SDL_Quit (); - printf("\n"); - return EXIT_SUCCESS; - break; - /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ - } - /* TODO: look for mouse events */ - } - } -} - - -int main(int argc, char **argv) { struct isst_s *isst; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-04-30 20:56:20
|
Revision: 38931 http://brlcad.svn.sourceforge.net/brlcad/?rev=38931&view=rev Author: erikgreenwald Date: 2010-04-30 20:56:13 +0000 (Fri, 30 Apr 2010) Log Message: ----------- allow zooming in and out using right click Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-04-30 20:39:10 UTC (rev 38930) +++ isst/trunk/sdl/event.c 2010-04-30 20:56:13 UTC (rev 38931) @@ -99,6 +99,15 @@ break; case 4: /* zoom in/out yrel */ + { + /* if you zoom past the focus point, it flips + * direction. up is awlays towards the focus. */ + vect_t vec; + VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); + VUNITIZE(vec); + VSCALE(vec, vec, -0.01 * isst->tie->radius * e.motion.yrel); + VADD2(isst->camera.pos.v, isst->camera.pos.v, vec); + } break; } Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-04-30 20:39:10 UTC (rev 38930) +++ isst/trunk/sdl/main.c 2010-04-30 20:56:13 UTC (rev 38931) @@ -65,15 +65,15 @@ { struct isst_s *isst; isst = (struct isst_s *)malloc(sizeof(struct isst_s)); + isst->tie = (struct tie_s *)bu_malloc(sizeof(struct tie_s), "tie"); + load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); TIENET_BUFFER_INIT(isst->buffer_image); render_camera_init(&isst->camera, bu_avail_cpus()); isst->camera.type = RENDER_CAMERA_PERSPECTIVE; isst->camera.fov = 25; - VSETALL(isst->camera.pos.v, 1); - VSETALL(isst->camera.focus.v, 0); + VSETALL(isst->camera.pos.v, isst->tie->radius); + VMOVE(isst->camera.focus.v, isst->tie->mid); render_phong_init(&isst->camera.render, NULL); - isst->tie = (struct tie_s *)bu_malloc(sizeof(struct tie_s), "tie"); - load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); return isst; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-07 14:06:23
|
Revision: 39076 http://brlcad.svn.sourceforge.net/brlcad/?rev=39076&view=rev Author: erikgreenwald Date: 2010-05-07 14:06:17 +0000 (Fri, 07 May 2010) Log Message: ----------- add opengl glTexSubImage2D render path Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/event.c isst/trunk/sdl/isst.h isst/trunk/sdl/main.c Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2010-05-07 13:55:27 UTC (rev 39075) +++ isst/trunk/sdl/Makefile.am 2010-05-07 14:06:17 UTC (rev 39076) @@ -6,7 +6,7 @@ libmyplugin_la_SOURCES=myplugin.c -AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ -AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ +AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ @GL_CFLAGS@ +AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ @GL_LIBS@ noinst_HEADERS = isst.h Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-07 13:55:27 UTC (rev 39075) +++ isst/trunk/sdl/event.c 2010-05-07 14:06:17 UTC (rev 39076) @@ -166,6 +166,22 @@ case '3': render_shader_init(&isst->camera.render, "depth", NULL); break; case '4': render_shader_init(&isst->camera.render, "component", NULL); break; case '=': render_shader_init(&isst->camera.render, "myplugin", NULL); break; + case SDLK_DELETE: + case '-': + { + char *shadername = NULL; + printf("\nReloading plugin\n"); + if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { + printf("Failed unloading plugin"); + exit(-1); + } + shadername = render_shader_load_plugin(".libs/libmyplugin.0.dylib"); + if(shadername == NULL) + printf("Failed loading plugin"); + else + printf("Loaded shader: %s\n", shadername); + } + break; case SDLK_UP: case 'e': vel[1] = 1; break; case SDLK_DOWN: @@ -176,7 +192,7 @@ case 'w': vel[0] = -1; break; case ' ': vel[2] = 1; break; case 'v': vel[2] = -1; break; - /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ + /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ } break; case SDL_KEYUP: Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-05-07 13:55:27 UTC (rev 39075) +++ isst/trunk/sdl/isst.h 2010-05-07 14:06:17 UTC (rev 39076) @@ -32,6 +32,10 @@ struct SDL_Rect r; struct SDL_Surface *screen; int ogl, sflags, w, h; +#ifdef HAVE_OPENGL + int texid; + void *texdata; +#endif }; void resize_isst(struct isst_s *isst); Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-07 13:55:27 UTC (rev 39075) +++ isst/trunk/sdl/main.c 2010-05-07 14:06:17 UTC (rev 39076) @@ -38,24 +38,17 @@ #endif #include <SDL.h> +#ifdef HAVE_OPENGL +# include <SDL_opengl.h> +#endif #include <tie.h> #include <adrt.h> #include <adrt_struct.h> #include <camera.h> +#include "isst.h" -struct isst_s { - struct tie_s *tie; - struct render_camera_s camera; - struct camera_tile_s tile; - struct adrt_mesh_s *meshes; - tienet_buffer_t buffer_image; - struct SDL_Rect r; - struct SDL_Surface *screen; - int ogl, sflags, w, h; -}; - void resize_isst(struct isst_s *isst) { @@ -69,6 +62,24 @@ printf("Failed to generate display context\n"); exit(EXIT_FAILURE); } +#ifdef HAVE_OPENGL + if(isst->sflags & SDL_OPENGL) { + glClearColor (0.0, 0, 0.0, 1); + glBindTexture (GL_TEXTURE_2D, isst->texid); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + isst->texdata = malloc(isst->r.w * isst->r.h * 3); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, isst->r.w, isst->r.h, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->texdata); + glDisable(GL_LIGHTING); + glViewport(0,0,isst->r.w, isst->r.h); + glMatrixMode (GL_PROJECTION); + glLoadIdentity (); + glOrtho(0, isst->r.w, isst->r.h, 0, -1, 1); + glMatrixMode (GL_MODELVIEW); + } +#endif } struct isst_s * @@ -91,8 +102,23 @@ void paint_ogl(struct isst_s *isst) { +#ifdef HAVE_OPENGL render_camera_prep(&isst->camera); render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); + glClear(GL_DEPTH_BUFFER_BIT/*|GL_COLOR_BUFFER_BIT*/); + glLoadIdentity(); + glColor3f(1,1,1); + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, isst->texid); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->r.w, isst->r.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2d(0,0); glVertex3f(0,0,0); + glTexCoord2d(0,1); glVertex3f(0,isst->r.h,0); + glTexCoord2d(1,0); glVertex3f(isst->r.w,0,0); + glTexCoord2d(1,1); glVertex3f(isst->r.w,isst->r.h,0); + glEnd(); + SDL_GL_SwapBuffers(); +#endif } void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sta...@us...> - 2010-05-11 15:04:32
|
Revision: 39100 http://brlcad.svn.sourceforge.net/brlcad/?rev=39100&view=rev Author: starseeker Date: 2010-05-11 15:04:26 +0000 (Tue, 11 May 2010) Log Message: ----------- Rough in code to use a file dialog to select the .g file for ISST with SDL, using the Agar toolkit. Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/main.c Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2010-05-11 14:58:03 UTC (rev 39099) +++ isst/trunk/sdl/Makefile.am 2010-05-11 15:04:26 UTC (rev 39100) @@ -6,7 +6,7 @@ libmyplugin_la_SOURCES=myplugin.c -AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ @GL_CFLAGS@ -AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ @GL_LIBS@ +AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ @GL_CFLAGS@ -I/agar-install-path/include/agar -D_GNU_SOURCE=1 -D_REENTRANT +AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ @GL_LIBS@ -L/agar-install-path/lib -lag_gui -lag_core -lSDL -lpthread -lm -ljpeg noinst_HEADERS = isst.h Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-11 14:58:03 UTC (rev 39099) +++ isst/trunk/sdl/main.c 2010-05-11 15:04:26 UTC (rev 39100) @@ -42,6 +42,9 @@ # include <SDL_opengl.h> #endif +#include <agar/core.h> +#include <agar/gui.h> + #include <tie.h> #include <adrt.h> #include <adrt_struct.h> @@ -49,6 +52,7 @@ #include "isst.h" +struct isst_s *isst; void resize_isst(struct isst_s *isst) { @@ -82,13 +86,56 @@ #endif } +static void +LoadG(AG_Event *event) +{ + AG_FileDlg *fd = AG_SELF(); + char *file = AG_STRING(1); + AG_FileType *ft = AG_PTR(2); + int argc = 2; + char **argv; + argv = (char **)bu_malloc(sizeof(char *)*(argc + 1), "isst sdl"); + argv[0] = "tank"; + argv[1] = NULL; + + load_g(isst->tie, file, argc-1, (const char **)argv, &(isst->meshes)); + bu_free((genptr_t)argv, "isst sdl"); + +} + +static void +CreateLoadWindow(void) +{ + AG_Window *win; + AG_FileDlg *fd; + AG_FileType *ft; + AG_Box *box; + + win = AG_WindowNew(0); + AG_WindowSetCaption(win, "Loading BRL-CAD .g Database"); + fd = AG_FileDlgNew(win, AG_FILEDLG_EXPAND|AG_FILEDLG_CLOSEWIN); + AG_FileDlgSetDirectoryMRU(fd, "/home/cyapp", "./cadtoplevel"); + AG_FileDlgSetFilenameS(fd, ""); + ft = AG_FileDlgAddType(fd, "BRL-CAD Database", "*.g", LoadG, NULL); + AG_WindowSetPosition(win, AG_WINDOW_MIDDLE_LEFT, 0); + AG_WindowShow(win); +} + struct isst_s * prep_isst(int argc, const char **argv) { - struct isst_s *isst; + isst = (struct isst_s *)malloc(sizeof(struct isst_s)); isst->tie = (struct tie_s *)bu_calloc(1,sizeof(struct tie_s), "tie"); - load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); + if (argc < 2) { + AG_InitCore("agar-dialog",0); + AG_InitGraphics(NULL); + CreateLoadWindow(); + AG_EventLoop(); + AG_Destroy(); + } else { + load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); + } TIENET_BUFFER_INIT(isst->buffer_image); render_camera_init(&isst->camera, bu_avail_cpus()); isst->camera.type = RENDER_CAMERA_PERSPECTIVE; @@ -176,11 +223,11 @@ printf("Bad screen resolution specified\n"); return EXIT_FAILURE; } - if(argc < 2) { +/* if(argc < 2) { printf("Must give .g file and list of tops\n"); return EXIT_FAILURE; } - +*/ SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER); atexit (SDL_Quit); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-12 12:17:23
|
Revision: 39117 http://brlcad.svn.sourceforge.net/brlcad/?rev=39117&view=rev Author: erikgreenwald Date: 2010-05-12 12:17:17 +0000 (Wed, 12 May 2010) Log Message: ----------- default to OpenGL context if possible. Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-12 11:35:12 UTC (rev 39116) +++ isst/trunk/sdl/event.c 2010-05-12 12:17:17 UTC (rev 39117) @@ -117,9 +117,11 @@ int i; isst->buffer_image.ind = 0; +#ifdef HAVE_OPENGL if(isst->ogl) paint_ogl(isst); else +#endif paint_sw(isst); /* some FPS stuff */ Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-12 11:35:12 UTC (rev 39116) +++ isst/trunk/sdl/main.c 2010-05-12 12:17:17 UTC (rev 39117) @@ -185,12 +185,12 @@ main(int argc, char **argv) { struct isst_s *isst; - int w = 800, h = 600, c, ogl = 0, sflags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_RESIZABLE; + int w = 800, h = 600, c, ogl = 1, sflags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_RESIZABLE|SDL_OPENGL; const char opts[] = /* or would it be better to */ #ifdef HAVE_OPENGL - "fw:h:g"; + "fw:h:s"; #else "fw:h:"; #endif @@ -206,9 +206,9 @@ case 'h': h = atoi(optarg); break; - case 'g': - sflags |= SDL_OPENGL; - ogl = 1; + case 's': + sflags &= ~SDL_OPENGL; + ogl = 0; break; case ':': case '?': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-12 17:28:10
|
Revision: 39141 http://brlcad.svn.sourceforge.net/brlcad/?rev=39141&view=rev Author: erikgreenwald Date: 2010-05-12 17:28:02 +0000 (Wed, 12 May 2010) Log Message: ----------- show how to pass values to plugin. use "z" to set the raytrace resolution to a fixed size Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/isst.h isst/trunk/sdl/main.c isst/trunk/sdl/myplugin.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-12 17:12:59 UTC (rev 39140) +++ isst/trunk/sdl/event.c 2010-05-12 17:28:02 UTC (rev 39141) @@ -69,8 +69,8 @@ void move_float(struct isst_s * isst, double dist) { - isst->camera.pos.v[2] += dist; - isst->camera.focus.v[2] += dist; + isst->camera.pos.v[2] += 2*dist; + isst->camera.focus.v[2] += 2*dist; } void @@ -117,7 +117,9 @@ int fc = 0, showfps = 1; double dt = 1.0, dt2 = 0.0; double mouse_sensitivity = 0.1; + double val = 1; int vel[3] = { 0, 0, 0 }; + char buf[BUFSIZ]; gettimeofday(ts, NULL); @@ -176,7 +178,9 @@ case '2': render_shader_init(&isst->camera.render, "normal", NULL); break; case '3': render_shader_init(&isst->camera.render, "depth", NULL); break; case '4': render_shader_init(&isst->camera.render, "component", NULL); break; - case '=': render_shader_init(&isst->camera.render, "myplugin", NULL); break; + case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; case SDLK_DELETE: case '-': { @@ -185,7 +189,8 @@ printf("Failed unloading plugin"); exit(-1); } - render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), NULL); + snprintf(buf, BUFSIZ, "%f", val); + render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); } break; case SDLK_UP: @@ -199,6 +204,7 @@ case ' ': vel[2] = 1; break; case 'v': vel[2] = -1; break; case '0': zero_view(isst); break; + case 'z': isst->gs = !isst->gs; resize_isst(isst); break; /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ } break; @@ -222,7 +228,7 @@ case 1: break; case 4: - look(isst, mouse_sensitivity * dt * e.motion.xrel, mouse_sensitivity * dt * e.motion.yrel); + look(isst, isst->w / isst->camera.w * mouse_sensitivity * dt * e.motion.xrel, isst->h / isst->camera.h * mouse_sensitivity * dt * e.motion.yrel); break; } break; Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-05-12 17:12:59 UTC (rev 39140) +++ isst/trunk/sdl/isst.h 2010-05-12 17:28:02 UTC (rev 39141) @@ -31,7 +31,7 @@ tienet_buffer_t buffer_image; struct SDL_Rect r; struct SDL_Surface *screen; - int ogl, sflags, w, h; + int ogl, sflags, w, h, gs; #ifdef HAVE_OPENGL int texid; void *texdata; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-12 17:12:59 UTC (rev 39140) +++ isst/trunk/sdl/main.c 2010-05-12 17:28:02 UTC (rev 39141) @@ -61,8 +61,12 @@ isst->r.w = isst->tile.size_x = isst->camera.w = isst->w; isst->r.h = isst->tile.size_y = isst->camera.h = isst->h; isst->r.x = isst->r.y = isst->tile.orig_x = isst->tile.orig_y = 0; + if(!isst->gs) { + isst->camera.w = isst->tile.size_x = 320; + isst->camera.h = isst->tile.size_y = 240; + } isst->tile.format = RENDER_CAMERA_BIT_DEPTH_24; - TIENET_BUFFER_SIZE(isst->buffer_image, 3 * isst->w * isst->h); + TIENET_BUFFER_SIZE(isst->buffer_image, 3 * isst->camera.w * isst->camera.h); isst->screen = SDL_SetVideoMode (isst->w, isst->h, 24, isst->sflags); if(isst->screen == NULL) { printf("Failed to generate display context\n"); @@ -73,11 +77,11 @@ glClearColor (0.0, 0, 0.0, 1); glBindTexture (GL_TEXTURE_2D, isst->texid); glPixelStorei (GL_UNPACK_ALIGNMENT, 1); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - isst->texdata = malloc(isst->r.w * isst->r.h * 3); - glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, isst->r.w, isst->r.h, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->texdata); + isst->texdata = malloc(isst->camera.w * isst->camera.h * 3); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, isst->camera.w, isst->camera.h, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->texdata); glDisable(GL_LIGHTING); glViewport(0,0,isst->r.w, isst->r.h); glMatrixMode (GL_PROJECTION); @@ -103,7 +107,6 @@ load_g(isst->tie, file, argc-1, (const char **)argv, &(isst->meshes)); bu_free((genptr_t)argv, "isst sdl"); - } static void @@ -165,7 +168,7 @@ glColor3f(1,1,1); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, isst->texid); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->r.w, isst->r.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->camera.w, isst->camera.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data); glBegin(GL_TRIANGLE_STRIP); glTexCoord2d(0,0); glVertex3f(0,0,0); glTexCoord2d(0,1); glVertex3f(0,isst->r.h,0); Modified: isst/trunk/sdl/myplugin.c =================================================================== --- isst/trunk/sdl/myplugin.c 2010-05-12 17:12:59 UTC (rev 39140) +++ isst/trunk/sdl/myplugin.c 2010-05-12 17:28:02 UTC (rev 39141) @@ -24,6 +24,7 @@ void init(render_t *r, char *usr) { + printf("value passed to shader: %s\n", usr); r->work = adrt_plugin_work; r->free = adrt_plugin_free; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-12 17:59:17
|
Revision: 39147 http://brlcad.svn.sourceforge.net/brlcad/?rev=39147&view=rev Author: erikgreenwald Date: 2010-05-12 17:59:11 +0000 (Wed, 12 May 2010) Log Message: ----------- zoom level insanity. Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-12 17:58:37 UTC (rev 39146) +++ isst/trunk/sdl/event.c 2010-05-12 17:59:11 UTC (rev 39147) @@ -206,7 +206,7 @@ case ' ': vel[2] = 1; break; case 'v': vel[2] = -1; break; case '0': zero_view(isst); break; - case 'z': isst->gs = !isst->gs; resize_isst(isst); break; + case 'z': isst->gs++; if(isst->gs >= 3) isst->gs = 0; resize_isst(isst); break; /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ } break; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-12 17:58:37 UTC (rev 39146) +++ isst/trunk/sdl/main.c 2010-05-12 17:59:11 UTC (rev 39147) @@ -59,12 +59,24 @@ void resize_isst(struct isst_s *isst) { - isst->r.w = isst->tile.size_x = isst->camera.w = isst->w; - isst->r.h = isst->tile.size_y = isst->camera.h = isst->h; + isst->r.w = isst->w; + isst->r.h = isst->h; isst->r.x = isst->r.y = isst->tile.orig_x = isst->tile.orig_y = 0; - if(!isst->gs) { - isst->camera.w = isst->tile.size_x = 320; - isst->camera.h = isst->tile.size_y = 240; + switch(isst->gs) { + case 0: + isst->camera.w = isst->tile.size_x = isst->w; + isst->camera.h = isst->tile.size_y = isst->h; + break; + case 1: + isst->camera.w = isst->tile.size_x = 320; + isst->camera.h = isst->tile.size_y = 240; + break; + case 2: + isst->camera.w = isst->tile.size_x = 40; + isst->camera.h = isst->tile.size_y = 30; + break; + default: + bu_log("Unknown level...\n"); } isst->tile.format = RENDER_CAMERA_BIT_DEPTH_24; TIENET_BUFFER_SIZE(isst->buffer_image, 3 * isst->camera.w * isst->camera.h); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-13 17:54:00
|
Revision: 39182 http://brlcad.svn.sourceforge.net/brlcad/?rev=39182&view=rev Author: erikgreenwald Date: 2010-05-13 17:53:53 +0000 (Thu, 13 May 2010) Log Message: ----------- store time delta and framerate in isst struct. fix resolution sensitivity issue Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/isst.h Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-13 17:17:06 UTC (rev 39181) +++ isst/trunk/sdl/event.c 2010-05-13 17:53:53 UTC (rev 39182) @@ -44,7 +44,7 @@ vect_t vec; VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); VUNITIZE(vec); - VSCALE(vec, vec, dist * isst->tie->radius); + VSCALE(vec, vec, isst->dt * dist * isst->tie->radius); VADD2(isst->camera.pos.v, isst->camera.pos.v, vec); if(dist < 0) VSCALE(vec, vec, -1); VADD2(isst->camera.focus.v, isst->camera.pos.v, vec); @@ -58,7 +58,7 @@ VSUB2(dir, isst->camera.focus.v, isst->camera.pos.v); VUNITIZE(dir); VCROSS(vec, dir, up); - VSCALE(vec, vec, dist * isst->tie->radius); + VSCALE(vec, vec, isst->dt * dist * isst->tie->radius); VADD2(isst->camera.pos.v, isst->camera.pos.v, vec); VADD2(isst->camera.focus.v, isst->camera.pos.v, dir); } @@ -66,8 +66,8 @@ void move_float(struct isst_s * isst, double dist) { - isst->camera.pos.v[2] += 2*dist; - isst->camera.focus.v[2] += 2*dist; + isst->camera.pos.v[2] += 2*isst->dt*dist; + isst->camera.focus.v[2] += 2*isst->dt*dist; } void @@ -89,12 +89,9 @@ VSUB2(vec, isst->camera.pos.v, isst->camera.focus.v); VUNITIZE(vec); AZEL_FROM_V3DIR(az, el, vec); - az *= -DEG2RAD; - el *= -DEG2RAD; + az = az * -DEG2RAD - x; + el = el * -DEG2RAD - y; - az -= 0.5*x; - el -= 0.5*y; - /* clamp to sane values */ while(az > 2*M_PI) az -= 2*M_PI; while(az < 0) az += 2*M_PI; @@ -112,12 +109,14 @@ SDL_Event e; double ts[2]; int fc = 0, showfps = 1; - double dt = 1.0, dt2 = 0.0; - double mouse_sensitivity = 0.1; + double dt2 = 0.0; + double mouse_sensitivity = 0.002; double val = 1; int vel[3] = { 0, 0, 0 }; char buf[BUFSIZ]; + isst->dt = 1; + isst->fps = 1; ts[0] = SDL_GetTicks(); while (1) @@ -135,21 +134,26 @@ /* some FPS stuff */ fc++; ts[1] = SDL_GetTicks(); - dt = 0.001 * (ts[1] - ts[0]); - dt2 += dt; + isst->dt = 0.001 * (ts[1] - ts[0]); + dt2 += isst->dt; ts[0] = SDL_GetTicks(); - if(showfps && dt2 > 0.5) { - printf(" \r%g FPS", (double)fc/dt2); - fflush(stdout); + if(dt2 > 0.5) { + isst->fps = (double)fc/dt2; fc=0; dt2 = 0; } + if(showfps) { + printf(" \r%g FPS", isst->fps); + fflush(stdout); + } +#if 0 #define MAXFPS 10.0 - if(dt < 1.0/MAXFPS) - SDL_Delay(1000 * 1.0/MAXFPS - dt); + if(isst->dt < 1.0/MAXFPS) + SDL_Delay(1000 * 1.0/MAXFPS - isst->dt); #undef MAXFPS +#endif while(SDL_PollEvent (&e)) switch (e.type) @@ -230,15 +234,15 @@ case 1: break; case 4: - look(isst, isst->w / isst->camera.w * mouse_sensitivity * dt * e.motion.xrel, isst->h / isst->camera.h * mouse_sensitivity * dt * e.motion.yrel); + look(isst, mouse_sensitivity * e.motion.xrel, mouse_sensitivity * e.motion.yrel); break; } break; } - if(vel[0] != 0) move_strafe(isst, dt*(double)vel[0]); - if(vel[1] != 0) move_walk(isst, dt*(double)vel[1]); - if(vel[2] != 0) move_float(isst, dt*(double)vel[2]); + if(vel[0] != 0) move_strafe(isst, (double)vel[0]); + if(vel[1] != 0) move_walk(isst, (double)vel[1]); + if(vel[2] != 0) move_float(isst, (double)vel[2]); } } Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-05-13 17:17:06 UTC (rev 39181) +++ isst/trunk/sdl/isst.h 2010-05-13 17:53:53 UTC (rev 39182) @@ -32,6 +32,7 @@ struct SDL_Rect r; struct SDL_Surface *screen; int ogl, sflags, w, h, gs; + double dt, fps; #ifdef HAVE_OPENGL int texid; void *texdata; @@ -39,17 +40,11 @@ }; void resize_isst(struct isst_s *isst); - struct isst_s * prep_isst(int argc, const char **argv); - void paint_ogl(struct isst_s *isst); - void paint_sw(struct isst_s *isst); - int do_loop(struct isst_s *isst); - - /* * Local Variables: * mode: C This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-13 18:19:31
|
Revision: 39183 http://brlcad.svn.sourceforge.net/brlcad/?rev=39183&view=rev Author: erikgreenwald Date: 2010-05-13 18:19:25 +0000 (Thu, 13 May 2010) Log Message: ----------- chintzy fold-away stuff (should probably use glFrustum and actual angles or something... the texture doesn't map quite right) Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/isst.h isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-13 17:53:53 UTC (rev 39182) +++ isst/trunk/sdl/event.c 2010-05-13 18:19:25 UTC (rev 39183) @@ -187,18 +187,18 @@ case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case SDLK_RETURN: isst->ui = !isst->ui; break; case SDLK_DELETE: case '-': - { - printf("\nReloading plugin\n"); - if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { - printf("Failed unloading plugin"); - exit(-1); - } - snprintf(buf, BUFSIZ, "%f", val); - render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); - } - break; + /* this stuff needs a lot of fixing */ + printf("\nReloading plugin\n"); + if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { + printf("Failed unloading plugin"); + exit(-1); + } + snprintf(buf, BUFSIZ, "%f", val); + render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); + break; case SDLK_UP: case 'e': vel[1] = 1; break; case SDLK_DOWN: @@ -243,6 +243,8 @@ if(vel[0] != 0) move_strafe(isst, (double)vel[0]); if(vel[1] != 0) move_walk(isst, (double)vel[1]); if(vel[2] != 0) move_float(isst, (double)vel[2]); + if(isst->ui && isst->uic < 0.99999) { isst->uic += 0.5*isst->dt; if(isst->uic > .25) isst->uic = .25; } + if(!isst->ui && isst->uic > 0.00001) { isst->uic -= 0.5*isst->dt; if(isst->uic < 0.0) isst->uic = 0.0; } } } Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-05-13 17:53:53 UTC (rev 39182) +++ isst/trunk/sdl/isst.h 2010-05-13 18:19:25 UTC (rev 39183) @@ -31,8 +31,8 @@ tienet_buffer_t buffer_image; struct SDL_Rect r; struct SDL_Surface *screen; - int ogl, sflags, w, h, gs; - double dt, fps; + int ogl, sflags, w, h, gs, ui; + double dt, fps, uic; #ifdef HAVE_OPENGL int texid; void *texdata; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-13 17:53:53 UTC (rev 39182) +++ isst/trunk/sdl/main.c 2010-05-13 18:19:25 UTC (rev 39183) @@ -174,17 +174,22 @@ paint_ogl(struct isst_s *isst) { #ifdef HAVE_OPENGL + int glclrbts = GL_DEPTH_BUFFER_BIT; + render_camera_prep(&isst->camera); render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); - glClear(GL_DEPTH_BUFFER_BIT/*|GL_COLOR_BUFFER_BIT*/); + + if(isst->ui) + glclrbts |= GL_COLOR_BUFFER_BIT; + glClear(glclrbts); glLoadIdentity(); glColor3f(1,1,1); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, isst->texid); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->camera.w, isst->camera.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data + sizeof(camera_tile_t)); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2d(0,0); glVertex3f(0,0,0); - glTexCoord2d(0,1); glVertex3f(0,isst->r.h,0); + glTexCoord2d(0,0); glVertex3f(isst->r.w*isst->uic,isst->r.h*isst->uic,0); + glTexCoord2d(0,1); glVertex3f(isst->r.w*isst->uic,isst->r.h*(1-isst->uic),0); glTexCoord2d(1,0); glVertex3f(isst->r.w,0,0); glTexCoord2d(1,1); glVertex3f(isst->r.w,isst->r.h,0); glEnd(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-13 19:22:27
|
Revision: 39186 http://brlcad.svn.sourceforge.net/brlcad/?rev=39186&view=rev Author: erikgreenwald Date: 2010-05-13 19:22:21 +0000 (Thu, 13 May 2010) Log Message: ----------- Add command entry mode. Shrink display to corner instead of folding it back. Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-13 19:09:43 UTC (rev 39185) +++ isst/trunk/sdl/event.c 2010-05-13 19:22:21 UTC (rev 39186) @@ -113,7 +113,7 @@ double mouse_sensitivity = 0.002; double val = 1; int vel[3] = { 0, 0, 0 }; - char buf[BUFSIZ]; + char buf[BUFSIZ], cmdbuf[BUFSIZ], *cmd; isst->dt = 1; isst->fps = 1; @@ -143,7 +143,7 @@ fc=0; dt2 = 0; } - if(showfps) { + if(showfps && isst->ui == 0) { printf(" \r%g FPS", isst->fps); fflush(stdout); } @@ -155,96 +155,119 @@ #undef MAXFPS #endif - while(SDL_PollEvent (&e)) - switch (e.type) - { - case SDL_VIDEORESIZE: - isst->w = e.resize.w; - isst->h = e.resize.h; - resize_isst(isst); - break; - case SDL_KEYDOWN: - switch (tolower (e.key.keysym.sym)) - { - case 'f': - if(isst->sflags&SDL_FULLSCREEN) - isst->sflags &= ~SDL_FULLSCREEN; - else - isst->sflags |= SDL_FULLSCREEN; - resize_isst(isst); - break; - case 'x': - case 'q': - case SDLK_ESCAPE: - SDL_Quit (); - printf("\n"); - return EXIT_SUCCESS; - break; - case '1': render_shader_init(&isst->camera.render, "phong", NULL); break; - case '2': render_shader_init(&isst->camera.render, "normal", NULL); break; - case '3': render_shader_init(&isst->camera.render, "depth", NULL); break; - case '4': render_shader_init(&isst->camera.render, "component", NULL); break; - case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; - case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; - case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; - case SDLK_RETURN: isst->ui = !isst->ui; break; - case SDLK_DELETE: - case '-': - /* this stuff needs a lot of fixing */ - printf("\nReloading plugin\n"); - if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { - printf("Failed unloading plugin"); - exit(-1); - } - snprintf(buf, BUFSIZ, "%f", val); - render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); - break; - case SDLK_UP: - case 'e': vel[1] = 1; break; - case SDLK_DOWN: - case 'd': vel[1] = -1; break; - case SDLK_RIGHT: - case 'r': vel[0] = 1; break; - case SDLK_LEFT: - case 'w': vel[0] = -1; break; - case ' ': vel[2] = 1; break; - case 'v': vel[2] = -1; break; - case '0': zero_view(isst); break; - case 'z': isst->gs++; if(isst->gs >= 3) isst->gs = 0; resize_isst(isst); break; - /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ - } - break; - case SDL_KEYUP: - switch (tolower (e.key.keysym.sym)) - { - case SDLK_UP: - case SDLK_DOWN: - case 'e': - case 'd': vel[1] = 0; break; - case SDLK_RIGHT: - case SDLK_LEFT: - case 'r': - case 'w': vel[0] = 0; break; - case ' ': - case 'v': vel[2] = 0; break; - } - break; - case SDL_MOUSEMOTION: - switch(e.motion.state) { - case 1: - break; - case 4: - look(isst, mouse_sensitivity * e.motion.xrel, mouse_sensitivity * e.motion.yrel); - break; - } - break; + while(SDL_PollEvent (&e)) { + if(isst->ui == 0) { + switch (e.type) + { + case SDL_VIDEORESIZE: + isst->w = e.resize.w; + isst->h = e.resize.h; + resize_isst(isst); + break; + case SDL_KEYDOWN: + switch (tolower (e.key.keysym.sym)) + { + case 'f': + if(isst->sflags&SDL_FULLSCREEN) + isst->sflags &= ~SDL_FULLSCREEN; + else + isst->sflags |= SDL_FULLSCREEN; + resize_isst(isst); + break; + case SDLK_F12: + SDL_Quit (); + printf("\n"); + return EXIT_SUCCESS; + break; + case '1': render_shader_init(&isst->camera.render, "phong", NULL); break; + case '2': render_shader_init(&isst->camera.render, "normal", NULL); break; + case '3': render_shader_init(&isst->camera.render, "depth", NULL); break; + case '4': render_shader_init(&isst->camera.render, "component", NULL); break; + case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case SDLK_ESCAPE: + case SDLK_RETURN: cmd = cmdbuf; isst->ui = !isst->ui; printf("\n"); break; + case SDLK_DELETE: + case '-': + /* this stuff needs a lot of fixing */ + printf("\nReloading plugin\n"); + if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { + printf("Failed unloading plugin"); + exit(-1); + } + snprintf(buf, BUFSIZ, "%f", val); + render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); + break; + case SDLK_UP: + case 'e': vel[1] = 1; break; + case SDLK_DOWN: + case 'd': vel[1] = -1; break; + case SDLK_RIGHT: + case 'r': vel[0] = 1; break; + case SDLK_LEFT: + case 'w': vel[0] = -1; break; + case ' ': vel[2] = 1; break; + case 'v': vel[2] = -1; break; + case '0': zero_view(isst); break; + case 'z': isst->gs++; if(isst->gs >= 3) isst->gs = 0; resize_isst(isst); break; + /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ + } + break; + case SDL_KEYUP: + switch (tolower (e.key.keysym.sym)) + { + case SDLK_UP: + case SDLK_DOWN: + case 'e': + case 'd': vel[1] = 0; break; + case SDLK_RIGHT: + case SDLK_LEFT: + case 'r': + case 'w': vel[0] = 0; break; + case ' ': + case 'v': vel[2] = 0; break; + } + break; + case SDL_MOUSEMOTION: + switch(e.motion.state) { + case 1: + break; + case 4: + look(isst, mouse_sensitivity * e.motion.xrel, mouse_sensitivity * e.motion.yrel); + break; + } + break; + } + if(vel[0] != 0) move_strafe(isst, (double)vel[0]); + if(vel[1] != 0) move_walk(isst, (double)vel[1]); + if(vel[2] != 0) move_float(isst, (double)vel[2]); + } else { /* control panel mode */ + switch(e.type) { + case SDL_KEYDOWN: + switch(e.key.keysym.sym) { + case SDLK_F12: + SDL_Quit(); + printf("\n"); + return EXIT_SUCCESS; + case SDLK_ESCAPE: + isst->ui = 0; + break; + case SDLK_RETURN: + *cmd = 0; + printf("\nExecute command: \"%s\"\n", cmdbuf); + isst->ui = 0; + break; + default: + *cmd++ = e.key.keysym.sym; + fflush(stdout); + } + } } - if(vel[0] != 0) move_strafe(isst, (double)vel[0]); - if(vel[1] != 0) move_walk(isst, (double)vel[1]); - if(vel[2] != 0) move_float(isst, (double)vel[2]); - if(isst->ui && isst->uic < 0.99999) { isst->uic += 0.5*isst->dt; if(isst->uic > .25) isst->uic = .25; } - if(!isst->ui && isst->uic > 0.00001) { isst->uic -= 0.5*isst->dt; if(isst->uic < 0.0) isst->uic = 0.0; } + } + if(isst->ui && isst->uic < 0.99999) { isst->uic += 2*isst->dt; if(isst->uic > 1.0) isst->uic = 1; } + if(!isst->ui && isst->uic > 0.00001) { isst->uic -= 2*isst->dt; if(isst->uic < 0.0) isst->uic = 0; } } } Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-13 19:09:43 UTC (rev 39185) +++ isst/trunk/sdl/main.c 2010-05-13 19:22:21 UTC (rev 39186) @@ -188,10 +188,17 @@ glBindTexture(GL_TEXTURE_2D, isst->texid); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->camera.w, isst->camera.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data + sizeof(camera_tile_t)); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2d(0,0); glVertex3f(isst->r.w*isst->uic,isst->r.h*isst->uic,0); - glTexCoord2d(0,1); glVertex3f(isst->r.w*isst->uic,isst->r.h*(1-isst->uic),0); - glTexCoord2d(1,0); glVertex3f(isst->r.w,0,0); - glTexCoord2d(1,1); glVertex3f(isst->r.w,isst->r.h,0); +#if 0 + glTexCoord2d(0, 0); glVertex3f(isst->r.w*isst->uic*0.25, isst->r.h*isst->uic*0.25, 0); + glTexCoord2d(0, 1); glVertex3f(isst->r.w*isst->uic*0.25, isst->r.h*(1-isst->uic*0.25), 0); + glTexCoord2d(1, 0); glVertex3f(isst->r.w, 0, 0); + glTexCoord2d(1, 1); glVertex3f(isst->r.w, isst->r.h, 0); +#else + glTexCoord2d(0, 0); glVertex3f(isst->r.w*isst->uic*0.25, 0, 0); + glTexCoord2d(0, 1); glVertex3f(isst->r.w*isst->uic*0.25, isst->r.h*(.75+.25*(1-isst->uic)), 0); + glTexCoord2d(1, 0); glVertex3f(isst->r.w, 0, 0); + glTexCoord2d(1, 1); glVertex3f(isst->r.w, isst->r.h*(.75+.25*(1-isst->uic)), 0); +#endif glEnd(); SDL_GL_SwapBuffers(); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-18 18:35:37
|
Revision: 39327 http://brlcad.svn.sourceforge.net/brlcad/?rev=39327&view=rev Author: erikgreenwald Date: 2010-05-18 18:35:31 +0000 (Tue, 18 May 2010) Log Message: ----------- win32 changes Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-18 18:32:06 UTC (rev 39326) +++ isst/trunk/sdl/event.c 2010-05-18 18:35:31 UTC (rev 39327) @@ -27,6 +27,10 @@ # include "isst_config.h" #endif +#if _WIN32 +# include "config_win.h" +#endif + #include <stdio.h> #include <SDL.h> Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-18 18:32:06 UTC (rev 39326) +++ isst/trunk/sdl/main.c 2010-05-18 18:35:31 UTC (rev 39327) @@ -27,6 +27,10 @@ # include "isst_config.h" #endif +#ifdef WIN32 +# define OPENGL 1 +#endif + #include <stdio.h> #ifdef HAVE_UNISTD_H @@ -210,10 +214,12 @@ int i; render_camera_prep(&isst->camera); render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); +#ifndef WIN32 for(i=0;i<isst->h;i++) memcpy(isst->screen->pixels + i * isst->screen->pitch, isst->buffer_image.data + i * isst->w * 3, isst->screen->w*3); +#endif SDL_UpdateRect(isst->screen, 0, 0, 0, 0); } @@ -223,6 +229,7 @@ struct isst_s *isst; int w = 800, h = 600, c, ogl = 1, sflags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_RESIZABLE|SDL_OPENGL; +#ifdef HAVE_GETOPT const char opts[] = /* or would it be better to */ #ifdef HAVE_OPENGL @@ -254,6 +261,12 @@ printf("optind: %d\n", optind); argc -= optind; argv += optind; +#else + argc = 3; + argv[1] = "ktank.g"; + argv[2] = "tank"; + argv[3] = "g17"; +#endif if(w < 1 || h < 1) { printf("Bad screen resolution specified\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-18 21:51:12
|
Revision: 39347 http://brlcad.svn.sourceforge.net/brlcad/?rev=39347&view=rev Author: erikgreenwald Date: 2010-05-18 21:51:06 +0000 (Tue, 18 May 2010) Log Message: ----------- add dirty flag, only update rendered output when needed. Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/isst.h isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-18 21:32:10 UTC (rev 39346) +++ isst/trunk/sdl/event.c 2010-05-18 21:51:06 UTC (rev 39347) @@ -122,6 +122,7 @@ isst->dt = 1; isst->fps = 1; + isst->dirty = 1; ts[0] = SDL_GetTicks(); while (1) @@ -168,6 +169,7 @@ case SDL_VIDEORESIZE: isst->w = e.resize.w; isst->h = e.resize.h; + isst->dirty = 1; resize_isst(isst); break; case SDL_KEYDOWN: @@ -185,22 +187,23 @@ printf("\n"); return EXIT_SUCCESS; break; - case '1': render_shader_init(&isst->camera.render, "phong", NULL); break; - case '2': render_shader_init(&isst->camera.render, "normal", NULL); break; - case '3': render_shader_init(&isst->camera.render, "depth", NULL); break; - case '4': render_shader_init(&isst->camera.render, "component", NULL); break; + case '1': render_shader_init(&isst->camera.render, "phong", NULL); isst->dirty = 1; break; + case '2': render_shader_init(&isst->camera.render, "normal", NULL); isst->dirty = 1; break; + case '3': render_shader_init(&isst->camera.render, "depth", NULL); isst->dirty = 1; break; + case '4': render_shader_init(&isst->camera.render, "component", NULL); isst->dirty = 1; break; case '5': VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); snprintf(buf, BUFSIZ, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos.v), V3ARGS(vec)); render_shader_init(&isst->camera.render, "cut", buf); move_strafe(isst, -0.05 / isst->dt); + isst->dirty = 1; break; case SDLK_ESCAPE: case SDLK_RETURN: VSETALL(vel, 0); cmd = cmdbuf; isst->ui = !isst->ui; printf("\n"); break; case SDLK_DELETE: - case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; - case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; - case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); break; + case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); isst->dirty = 1; break; + case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); isst->dirty = 1; break; + case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); isst->dirty = 1; break; case '-': /* this stuff needs a lot of fixing */ printf("\nReloading plugin\n"); @@ -210,6 +213,7 @@ } snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); + isst->dirty = 1; break; case SDLK_UP: case 'e': vel[1] = 1; break; @@ -247,6 +251,7 @@ break; case 4: look(isst, mouse_sensitivity * e.motion.xrel, mouse_sensitivity * e.motion.yrel); + isst->dirty = 1; break; } break; @@ -275,9 +280,9 @@ } } } - if(vel[0] != 0) move_strafe(isst, (double)vel[0]); - if(vel[1] != 0) move_walk(isst, (double)vel[1]); - if(vel[2] != 0) move_float(isst, (double)vel[2]); + if(vel[0] != 0) { move_strafe(isst, (double)vel[0]); isst->dirty = 1; } + if(vel[1] != 0) { move_walk(isst, (double)vel[1]); isst->dirty = 1; } + if(vel[2] != 0) { move_float(isst, (double)vel[2]); isst->dirty = 1; } if(isst->ui && isst->uic < 0.99999) { isst->uic += 2*isst->dt; if(isst->uic > 1.0) isst->uic = 1; } if(!isst->ui && isst->uic > 0.00001) { isst->uic -= 2*isst->dt; if(isst->uic < 0.0) isst->uic = 0; } } Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-05-18 21:32:10 UTC (rev 39346) +++ isst/trunk/sdl/isst.h 2010-05-18 21:51:06 UTC (rev 39347) @@ -31,7 +31,7 @@ tienet_buffer_t buffer_image; struct SDL_Rect r; struct SDL_Surface *screen; - int ogl, sflags, w, h, gs, ui; + int ogl, sflags, w, h, gs, ui, dirty, ft; double dt, fps, uic; #ifdef HAVE_OPENGL int texid; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-18 21:32:10 UTC (rev 39346) +++ isst/trunk/sdl/main.c 2010-05-18 21:51:06 UTC (rev 39347) @@ -180,9 +180,6 @@ #ifdef HAVE_OPENGL int glclrbts = GL_DEPTH_BUFFER_BIT; - render_camera_prep(&isst->camera); - render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); - if(isst->ui) glclrbts |= GL_COLOR_BUFFER_BIT; glClear(glclrbts); @@ -190,7 +187,13 @@ glColor3f(1,1,1); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, isst->texid); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->camera.w, isst->camera.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data + sizeof(camera_tile_t)); + + if(isst->ft || isst->dirty) { + render_camera_prep(&isst->camera); + render_camera_render(&isst->camera, isst->tie, &isst->tile, &isst->buffer_image); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, isst->camera.w, isst->camera.h, GL_RGB, GL_UNSIGNED_BYTE, isst->buffer_image.data + sizeof(camera_tile_t)); + } + glBegin(GL_TRIANGLE_STRIP); #if 0 glTexCoord2d(0, 0); glVertex3f(isst->r.w*isst->uic*0.25, isst->r.h*isst->uic*0.25, 0); @@ -205,6 +208,7 @@ #endif glEnd(); SDL_GL_SwapBuffers(); + isst->dirty = 0; #endif } @@ -287,6 +291,7 @@ isst->ogl = ogl; isst->w = w; isst->h = h; + isst->ft = 0; if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { printf("Failed loading plugin"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-19 14:48:13
|
Revision: 39372 http://brlcad.svn.sourceforge.net/brlcad/?rev=39372&view=rev Author: erikgreenwald Date: 2010-05-19 14:48:07 +0000 (Wed, 19 May 2010) Log Message: ----------- move setting the dirty flag into the action functions Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-19 14:33:43 UTC (rev 39371) +++ isst/trunk/sdl/event.c 2010-05-19 14:48:07 UTC (rev 39372) @@ -46,6 +46,8 @@ move_walk(struct isst_s * isst, double dist) { vect_t vec; + + isst->dirty = 1; VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); VUNITIZE(vec); VSCALE(vec, vec, isst->dt * dist * isst->tie->radius); @@ -58,6 +60,8 @@ move_strafe(struct isst_s * isst, double dist) { vect_t vec, dir, up; + + isst->dirty = 1; VSET(up, 0, 0, 1); VSUB2(dir, isst->camera.focus.v, isst->camera.pos.v); VUNITIZE(dir); @@ -70,6 +74,7 @@ void move_float(struct isst_s * isst, double dist) { + isst->dirty = 1; isst->camera.pos.v[2] += 2*isst->dt*dist; isst->camera.focus.v[2] += 2*isst->dt*dist; } @@ -78,6 +83,8 @@ zero_view(struct isst_s *isst) { vect_t vec; + + isst->dirty = 1; VSUB2(vec, isst->tie->mid, isst->camera.pos.v); VUNITIZE(vec); VADD2(isst->camera.focus.v, isst->camera.pos.v, vec); @@ -89,6 +96,7 @@ double az, el; vect_t vec; + isst->dirty = 1; /* generate az/el (oddly, this generates degrees instead of radians) */ VSUB2(vec, isst->camera.pos.v, isst->camera.focus.v); VUNITIZE(vec); @@ -107,6 +115,13 @@ VADD2(isst->camera.focus.v, isst->camera.pos.v, vec); } +void +shader(struct isst_s *isst, char *mode, char *buf) +{ + isst->dirty = 1; + render_shader_init(&isst->camera.render, mode, buf); +} + int do_loop(struct isst_s *isst) { @@ -169,7 +184,6 @@ case SDL_VIDEORESIZE: isst->w = e.resize.w; isst->h = e.resize.h; - isst->dirty = 1; resize_isst(isst); break; case SDL_KEYDOWN: @@ -187,23 +201,22 @@ printf("\n"); return EXIT_SUCCESS; break; - case '1': render_shader_init(&isst->camera.render, "phong", NULL); isst->dirty = 1; break; - case '2': render_shader_init(&isst->camera.render, "normal", NULL); isst->dirty = 1; break; - case '3': render_shader_init(&isst->camera.render, "depth", NULL); isst->dirty = 1; break; - case '4': render_shader_init(&isst->camera.render, "component", NULL); isst->dirty = 1; break; + case '1': shader(isst, "phong", NULL); break; + case '2': shader(isst, "normal", NULL); break; + case '3': shader(isst, "depth", NULL); break; + case '4': shader(isst, "component", NULL); break; case '5': VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); snprintf(buf, BUFSIZ, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos.v), V3ARGS(vec)); - render_shader_init(&isst->camera.render, "cut", buf); + shader(isst, "cut", buf); move_strafe(isst, -0.05 / isst->dt); - isst->dirty = 1; break; case SDLK_ESCAPE: case SDLK_RETURN: VSETALL(vel, 0); cmd = cmdbuf; isst->ui = !isst->ui; printf("\n"); break; case SDLK_DELETE: - case '=': snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); isst->dirty = 1; break; - case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); isst->dirty = 1; break; - case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); render_shader_init(&isst->camera.render, "myplugin", buf); isst->dirty = 1; break; + case '=': snprintf(buf, BUFSIZ, "%f", val); shader(isst, "myplugin", buf); break; + case '[': val -= 0.1; snprintf(buf, BUFSIZ, "%f", val); shader(isst, "myplugin", buf); break; + case ']': val += 0.1; snprintf(buf, BUFSIZ, "%f", val); shader(isst, "myplugin", buf); break; case '-': /* this stuff needs a lot of fixing */ printf("\nReloading plugin\n"); @@ -212,8 +225,7 @@ exit(-1); } snprintf(buf, BUFSIZ, "%f", val); - render_shader_init(&isst->camera.render, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); - isst->dirty = 1; + shader(isst, render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); break; case SDLK_UP: case 'e': vel[1] = 1; break; @@ -280,9 +292,9 @@ } } } - if(vel[0] != 0) { move_strafe(isst, (double)vel[0]); isst->dirty = 1; } - if(vel[1] != 0) { move_walk(isst, (double)vel[1]); isst->dirty = 1; } - if(vel[2] != 0) { move_float(isst, (double)vel[2]); isst->dirty = 1; } + if(vel[0] != 0) move_strafe(isst, (double)vel[0]); + if(vel[1] != 0) move_walk(isst, (double)vel[1]); + if(vel[2] != 0) move_float(isst, (double)vel[2]); if(isst->ui && isst->uic < 0.99999) { isst->uic += 2*isst->dt; if(isst->uic > 1.0) isst->uic = 1; } if(!isst->ui && isst->uic > 0.00001) { isst->uic -= 2*isst->dt; if(isst->uic < 0.0) isst->uic = 0; } } Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-19 14:33:43 UTC (rev 39371) +++ isst/trunk/sdl/main.c 2010-05-19 14:48:07 UTC (rev 39372) @@ -63,6 +63,7 @@ void resize_isst(struct isst_s *isst) { + isst->dirty = 1; isst->r.w = isst->w; isst->r.h = isst->h; isst->r.x = isst->r.y = isst->tile.orig_x = isst->tile.orig_y = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-06-03 20:05:45
|
Revision: 39537 http://brlcad.svn.sourceforge.net/brlcad/?rev=39537&view=rev Author: erikgreenwald Date: 2010-06-03 20:05:38 +0000 (Thu, 03 Jun 2010) Log Message: ----------- clear cut list before cutting. something about grabbing pointer on fullscreen. other minor stuff Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/myplugin.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-06-03 19:57:00 UTC (rev 39536) +++ isst/trunk/sdl/event.c 2010-06-03 20:05:38 UTC (rev 39537) @@ -64,8 +64,8 @@ isst->dirty = 1; VSET(up, 0, 0, 1); VSUB2(dir, isst->camera.focus.v, isst->camera.pos.v); - VUNITIZE(dir); VCROSS(vec, dir, up); + VUNITIZE(vec); VSCALE(vec, vec, isst->dt * dist * isst->tie->radius); VADD2(isst->camera.pos.v, isst->camera.pos.v, vec); VADD2(isst->camera.focus.v, isst->camera.pos.v, dir); @@ -134,6 +134,7 @@ int vel[3] = { 0, 0, 0 }, sc=0; char buf[BUFSIZ], cmdbuf[BUFSIZ], *cmd; vect_t vec; + struct adrt_mesh_s *mesh; isst->dt = 1; isst->fps = 1; @@ -190,10 +191,13 @@ switch (tolower (e.key.keysym.sym)) { case SDLK_F11: - if(isst->sflags&SDL_FULLSCREEN) + if(isst->sflags&SDL_FULLSCREEN) { isst->sflags &= ~SDL_FULLSCREEN; - else + SDL_WM_GrabInput(SDL_GRAB_OFF); + } else { isst->sflags |= SDL_FULLSCREEN; + SDL_WM_GrabInput(SDL_GRAB_ON); + } resize_isst(isst); break; case SDLK_F12: @@ -206,6 +210,9 @@ case '3': shader(isst, "depth", NULL); break; case '4': shader(isst, "component", NULL); break; case '5': + /* clear all the hit list */ + for(BU_LIST_FOR(mesh, adrt_mesh_s, &isst->meshes->l)) + mesh->flags &= ~ADRT_MESH_HIT; VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); snprintf(buf, BUFSIZ, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos.v), V3ARGS(vec)); shader(isst, "cut", buf); @@ -218,15 +225,15 @@ case '[': sc = -1; break; case ']': sc = 1; break; case '-': - /* this stuff needs a lot of fixing */ - printf("\nReloading plugin\n"); - if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { - printf("Failed unloading plugin"); - exit(-1); - } - snprintf(buf, BUFSIZ, "%f", val); - shader(isst, (const char *)render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); - break; + /* this stuff needs a lot of fixing */ + printf("\nReloading plugin\n"); + if(render_shader_unload_plugin(&isst->camera.render, "myplugin")) { + printf("Failed unloading plugin"); + exit(-1); + } + snprintf(buf, BUFSIZ, "%f", val); + shader(isst, (const char *)render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); + break; case SDLK_UP: case 'e': vel[1] = 1; break; case SDLK_DOWN: Modified: isst/trunk/sdl/myplugin.c =================================================================== --- isst/trunk/sdl/myplugin.c 2010-06-03 19:57:00 UTC (rev 39536) +++ isst/trunk/sdl/myplugin.c 2010-06-03 20:05:38 UTC (rev 39537) @@ -54,7 +54,7 @@ if(hitdata.in) { VSET(pixel->v, 1, 0, 0); } else - VSET(pixel->v, hitdata.color, hitdata.color, hitdata.color); + VSETALL(pixel->v, hitdata.color); } void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-06-08 14:00:03
|
Revision: 39574 http://brlcad.svn.sourceforge.net/brlcad/?rev=39574&view=rev Author: erikgreenwald Date: 2010-06-08 13:59:57 +0000 (Tue, 08 Jun 2010) Log Message: ----------- add ortho mode, "o" toggles Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-06-08 13:51:39 UTC (rev 39573) +++ isst/trunk/sdl/event.c 2010-06-08 13:59:57 UTC (rev 39574) @@ -246,6 +246,10 @@ case 'f': vel[2] = -1; break; case '0': zero_view(isst); break; case 'z': isst->gs++; if(isst->gs >= 3) isst->gs = 0; resize_isst(isst); break; + case 'o': + isst->camera.type = isst->camera.type == RENDER_CAMERA_ORTHOGRAPHIC ? RENDER_CAMERA_PERSPECTIVE : RENDER_CAMERA_ORTHOGRAPHIC; + isst->dirty = 1; + break; /* TODO: more keys for nifty things like changing mode or pulling up gui bits or something */ } break; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-06-08 13:51:39 UTC (rev 39573) +++ isst/trunk/sdl/main.c 2010-06-08 13:59:57 UTC (rev 39574) @@ -292,6 +292,7 @@ isst->ogl = ogl; isst->w = w; isst->h = h; + isst->camera.gridsize = isst->tie->radius * 2; isst->ft = 0; if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { printf("Failed loading plugin"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-06-17 20:07:46
|
Revision: 39622 http://brlcad.svn.sourceforge.net/brlcad/?rev=39622&view=rev Author: erikgreenwald Date: 2010-06-17 20:07:37 +0000 (Thu, 17 Jun 2010) Log Message: ----------- basic text rendering Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/isst.h isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-06-17 20:03:48 UTC (rev 39621) +++ isst/trunk/sdl/event.c 2010-06-17 20:07:37 UTC (rev 39622) @@ -140,6 +140,9 @@ isst->fps = 1; isst->dirty = 1; ts[0] = SDL_GetTicks(); + isst->cmdbuf = cmdbuf; + memset(cmdbuf, 0, BUFSIZ); + memset(buf, 0, BUFSIZ); while (1) { @@ -298,9 +301,11 @@ *cmd = 0; printf("\nExecute command: \"%s\"\n", cmdbuf); isst->ui = 0; + *cmdbuf = 0; break; default: *cmd++ = e.key.keysym.sym; + *cmd = 0; fflush(stdout); } } Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-06-17 20:03:48 UTC (rev 39621) +++ isst/trunk/sdl/isst.h 2010-06-17 20:07:37 UTC (rev 39622) @@ -22,7 +22,6 @@ * */ - struct isst_s { struct tie_s *tie; struct render_camera_s camera; @@ -34,9 +33,10 @@ int ogl, sflags, w, h, gs, ui, dirty, ft; double dt, fps, uic; #ifdef HAVE_OPENGL - int texid; + int texid, fonttexid; void *texdata; #endif + char *cmdbuf; }; void resize_isst(struct isst_s *isst); Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-06-17 20:03:48 UTC (rev 39621) +++ isst/trunk/sdl/main.c 2010-06-17 20:07:37 UTC (rev 39622) @@ -37,6 +37,10 @@ # include <unistd.h> #endif +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#endif + #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif @@ -58,7 +62,10 @@ #include "isst.h" +#define FONT_SIZE 1024 + struct isst_s *isst; +GLuint fontid; void resize_isst(struct isst_s *isst) @@ -149,13 +156,12 @@ struct isst_s * prep_isst(int argc, const char **argv) { - isst = (struct isst_s *)bu_calloc(1,sizeof(struct isst_s), "isst"); isst->tie = (struct tie_s *)bu_calloc(1,sizeof(struct tie_s), "tie"); if (argc < 2) { #ifdef HAVE_AGAR - AG_InitCore("agar-dialog",0); - AG_InitGraphics(NULL); + AG_InitCore("agar-dialog",0); + AG_InitGraphics(NULL); CreateLoadWindow(); AG_EventLoop(); AG_Destroy(); @@ -163,7 +169,7 @@ bu_log("Something really bad happened\n"); #endif } else { - load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); + load_g(isst->tie, argv[0], argc-1, argv+1, &(isst->meshes)); } TIENET_BUFFER_INIT(isst->buffer_image); render_camera_init(&isst->camera, bu_avail_cpus()); @@ -179,7 +185,7 @@ paint_ogl(struct isst_s *isst) { #ifdef HAVE_OPENGL - int glclrbts = GL_DEPTH_BUFFER_BIT; + int glclrbts = GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT; if(isst->ui) glclrbts |= GL_COLOR_BUFFER_BIT; @@ -208,6 +214,27 @@ glTexCoord2d(1, 1); glVertex3f(isst->r.w, isst->r.h*(.75+.25*(1-isst->uic)), 0); #endif glEnd(); + if(*isst->cmdbuf) { + char *cmd = isst->cmdbuf; + int i = 0; + + glBindTexture(GL_TEXTURE_2D, isst->fonttexid); + while(*cmd) { + double x, y, s = 1.0/16.0; + x = (double)((*cmd)&0xf)/16.0; + y = (double)((*cmd)>>4)/16.0; + glBegin(GL_TRIANGLE_STRIP); +#define FONTSIZE 32 + glTexCoord2d(x, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); + glTexCoord2d(x, y+s); glVertex3f(0.5*i*FONTSIZE, isst->r.h-FONTSIZE, 0); + i++; + glTexCoord2d(x+s, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); + glTexCoord2d(x+s, y+s); glVertex3f(0.5*i*FONTSIZE, isst->r.h-FONTSIZE, 0); +#undef FONTSIZE + glEnd(); + cmd++; + } + } SDL_GL_SwapBuffers(); isst->dirty = 0; #endif @@ -294,11 +321,45 @@ isst->h = h; isst->camera.gridsize = isst->tie->radius * 2; isst->ft = 0; + if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { - printf("Failed loading plugin"); + bu_log("Failed loading plugin\n"); } +#ifdef HAVE_OPENGL + bu_log("Genreating textures\n"); + isst->screen = SDL_SetVideoMode (isst->w, isst->h, 24, isst->sflags); + glEnable(GL_TEXTURE_2D); + glGenTextures(1, &(isst->texid)); + glGenTextures(1, &(isst->fonttexid)); + bu_log("\ntexid: %d\nfontid: %d\n", isst->texid, isst->fonttexid); + fflush(stdout); +#endif resize_isst(isst); +#ifdef HAVE_OPENGL + if(isst->sflags & SDL_OPENGL) { + char buf[3*FONT_SIZE*FONT_SIZE]; + int fd; + bu_log("Reading font\n"); + fd = open("trebuchet_bold.pix", O_RDONLY); + if(fd == -1) { + perror("Font file"); + exit(-1); + } + read(fd, buf, 3*FONT_SIZE*FONT_SIZE); + close(fd); + + glBindTexture (GL_TEXTURE_2D, isst->fonttexid); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, FONT_SIZE, FONT_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, buf); + glBindTexture (GL_TEXTURE_2D, isst->texid); + } +#endif + + /* main event loop */ return do_loop(isst); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-06-17 20:25:40
|
Revision: 39623 http://brlcad.svn.sourceforge.net/brlcad/?rev=39623&view=rev Author: erikgreenwald Date: 2010-06-17 20:25:34 +0000 (Thu, 17 Jun 2010) Log Message: ----------- regenerate textures on resize Modified Paths: -------------- isst/trunk/sdl/isst.h isst/trunk/sdl/main.c Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2010-06-17 20:07:37 UTC (rev 39622) +++ isst/trunk/sdl/isst.h 2010-06-17 20:25:34 UTC (rev 39623) @@ -35,6 +35,7 @@ #ifdef HAVE_OPENGL int texid, fonttexid; void *texdata; + void *fonttextbuf; #endif char *cmdbuf; }; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-06-17 20:07:37 UTC (rev 39622) +++ isst/trunk/sdl/main.c 2010-06-17 20:25:34 UTC (rev 39623) @@ -100,6 +100,9 @@ #ifdef HAVE_OPENGL if(isst->sflags & SDL_OPENGL) { glClearColor (0.0, 0, 0.0, 1); + glEnable(GL_TEXTURE_2D); + + glGenTextures(1, &(isst->texid)); glBindTexture (GL_TEXTURE_2D, isst->texid); glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -107,6 +110,15 @@ glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); isst->texdata = realloc(isst->texdata, isst->camera.w * isst->camera.h * 3); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, isst->camera.w, isst->camera.h, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->texdata); + + glGenTextures(1, &(isst->fonttexid)); + glBindTexture (GL_TEXTURE_2D, isst->fonttexid); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, FONT_SIZE, FONT_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->fonttextbuf); + glDisable(GL_LIGHTING); glViewport(0,0,isst->r.w, isst->r.h); glMatrixMode (GL_PROJECTION); @@ -218,11 +230,13 @@ char *cmd = isst->cmdbuf; int i = 0; + glColor3f(0,1,0.5); glBindTexture(GL_TEXTURE_2D, isst->fonttexid); while(*cmd) { double x, y, s = 1.0/16.0; x = (double)((*cmd)&0xf)/16.0; y = (double)((*cmd)>>4)/16.0; + glBegin(GL_TRIANGLE_STRIP); #define FONTSIZE 32 glTexCoord2d(x, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); @@ -267,7 +281,7 @@ #ifdef HAVE_OPENGL "fw:h:s"; #else - "fw:h:"; + "fw:h:"; #endif while((c=getopt(argc, argv, opts)) != -1) @@ -289,7 +303,7 @@ case '?': printf("Whu?\n"); return EXIT_FAILURE; - } + } printf("optind: %d\n", optind); argc -= optind; argv += optind; @@ -322,44 +336,27 @@ isst->camera.gridsize = isst->tie->radius * 2; isst->ft = 0; - if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { - bu_log("Failed loading plugin\n"); - } #ifdef HAVE_OPENGL - bu_log("Genreating textures\n"); - isst->screen = SDL_SetVideoMode (isst->w, isst->h, 24, isst->sflags); - glEnable(GL_TEXTURE_2D); - glGenTextures(1, &(isst->texid)); - glGenTextures(1, &(isst->fonttexid)); - bu_log("\ntexid: %d\nfontid: %d\n", isst->texid, isst->fonttexid); - fflush(stdout); -#endif - resize_isst(isst); - -#ifdef HAVE_OPENGL - if(isst->sflags & SDL_OPENGL) { - char buf[3*FONT_SIZE*FONT_SIZE]; + { int fd; - bu_log("Reading font\n"); + + isst->fonttextbuf = malloc(1024*1024*3); fd = open("trebuchet_bold.pix", O_RDONLY); if(fd == -1) { - perror("Font file"); - exit(-1); + perror("Font file"); + exit(-1); } - read(fd, buf, 3*FONT_SIZE*FONT_SIZE); + read(fd, isst->fonttextbuf, 3*FONT_SIZE*FONT_SIZE); close(fd); - - glBindTexture (GL_TEXTURE_2D, isst->fonttexid); - glPixelStorei (GL_UNPACK_ALIGNMENT, 1); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, FONT_SIZE, FONT_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, buf); - glBindTexture (GL_TEXTURE_2D, isst->texid); } #endif + if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { + bu_log("Failed loading plugin\n"); + } + resize_isst(isst); + /* main event loop */ return do_loop(isst); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-06-17 20:28:47
|
Revision: 39624 http://brlcad.svn.sourceforge.net/brlcad/?rev=39624&view=rev Author: erikgreenwald Date: 2010-06-17 20:28:41 +0000 (Thu, 17 Jun 2010) Log Message: ----------- scale font size to window height Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/ffu.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2010-06-17 20:25:34 UTC (rev 39623) +++ isst/trunk/sdl/Makefile.am 2010-06-17 20:28:41 UTC (rev 39624) @@ -1,12 +1,15 @@ -bin_PROGRAMS=isst_sdl +bin_PROGRAMS=isst_sdl ffu lib_LTLIBRARIES=libmyplugin.la isst_sdl_SOURCES=main.c event.c +ffu_SOURCES=ffu.c libmyplugin_la_SOURCES=myplugin.c AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ @GL_CFLAGS@ @AGAR_CFLAGS@ -D_GNU_SOURCE=1 -D_REENTRANT +ffu_CFLAGS=-I/opt/local/include -I/opt/local/include/freetype2 -I/usr/local/include -I/usr/local/include/freetype2 AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ @GL_LIBS@ @AGAR_LIBS@ -lSDL -lpthread -lm -ljpeg +ffu_LDADD=-lfreetype noinst_HEADERS = isst.h Modified: isst/trunk/sdl/ffu.c =================================================================== --- isst/trunk/sdl/ffu.c 2010-06-17 20:25:34 UTC (rev 39623) +++ isst/trunk/sdl/ffu.c 2010-06-17 20:28:41 UTC (rev 39624) @@ -37,7 +37,6 @@ void paint(char *buf, char *glyph, int rows, int width, int stride) { - glyph += (rows-1)*width; while(rows--) { int i; for(i=0;i<width;i++) { @@ -71,6 +70,12 @@ return; } +void +pixflip(char *buf, int width, int height) +{ + +} + int main(int argc, char **argv) { @@ -132,7 +137,7 @@ printf("%d glyphs %dx%d (%dx%d) from %s, heading to %s\n", f->num_glyphs, s, s, (s>>4), (s>>4), *argv, argv[1]); - i = FT_Set_Pixel_Sizes(f, 0, s>>4); + i = FT_Set_Pixel_Sizes(f, s>>4, s>>4); if(i) { printf("Error setting pixel size: %d\n", i); return -1; @@ -141,14 +146,19 @@ for(i=0;i<=0xff;i++) { if(isprint(i)) { + int x, y, ss; + ss = s>>4; if(FT_Load_Glyph(f,FT_Get_Char_Index(f, i),FT_LOAD_DEFAULT)) { printf("Error loading glyph for %c(%d)\n", i, i); return -1; } FT_Render_Glyph(f->glyph, FT_RENDER_MODE_NORMAL); - paint( buf + - (((i>>4)*s + (i&0xf)) - * (s>>4) - s * f->glyph->bitmap_top) * 3, f->glyph->bitmap.buffer ,f->glyph->bitmap.rows, f->glyph->bitmap.width, s); + x = ((i&0xf)*s>>4) + f->glyph->bitmap_left; + y = ((i>>4)) * s>>4; + printf("%d: %d/%d %d\n", i, i&0xf, x, y); + paint( buf + ( y * s + x) * 3, + f->glyph->bitmap.buffer + (f->glyph->bitmap.rows-1) * f->glyph->bitmap.width + ,f->glyph->bitmap.rows, f->glyph->bitmap.width, s); } } Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-06-17 20:25:34 UTC (rev 39623) +++ isst/trunk/sdl/main.c 2010-06-17 20:28:41 UTC (rev 39624) @@ -229,7 +229,10 @@ if(*isst->cmdbuf) { char *cmd = isst->cmdbuf; int i = 0; + double FONTSIZE; + FONTSIZE = isst->r.h / 12.0; + glColor3f(0,1,0.5); glBindTexture(GL_TEXTURE_2D, isst->fonttexid); while(*cmd) { @@ -238,13 +241,12 @@ y = (double)((*cmd)>>4)/16.0; glBegin(GL_TRIANGLE_STRIP); -#define FONTSIZE 32 glTexCoord2d(x, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); glTexCoord2d(x, y+s); glVertex3f(0.5*i*FONTSIZE, isst->r.h-FONTSIZE, 0); i++; glTexCoord2d(x+s, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); glTexCoord2d(x+s, y+s); glVertex3f(0.5*i*FONTSIZE, isst->r.h-FONTSIZE, 0); -#undef FONTSIZE + glEnd(); cmd++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2011-03-04 20:44:10
|
Revision: 43702 http://brlcad.svn.sourceforge.net/brlcad/?rev=43702&view=rev Author: erikgreenwald Date: 2011-03-04 20:44:03 +0000 (Fri, 04 Mar 2011) Log Message: ----------- disable texture fonts, make compile with current BRL-CAD Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/event.c isst/trunk/sdl/isst.h isst/trunk/sdl/main.c isst/trunk/sdl/myplugin.c Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2011-03-04 20:38:36 UTC (rev 43701) +++ isst/trunk/sdl/Makefile.am 2011-03-04 20:44:03 UTC (rev 43702) @@ -1,5 +1,5 @@ -bin_PROGRAMS=isst_sdl ffu +bin_PROGRAMS=isst_sdl lib_LTLIBRARIES=libmyplugin.la isst_sdl_SOURCES=main.c event.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2011-03-04 20:38:36 UTC (rev 43701) +++ isst/trunk/sdl/event.c 2011-03-04 20:44:03 UTC (rev 43702) @@ -48,12 +48,12 @@ vect_t vec; isst->dirty = 1; - VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); + VSUB2(vec, isst->camera.focus, isst->camera.pos); VUNITIZE(vec); VSCALE(vec, vec, isst->dt * dist * isst->tie->radius); - VADD2(isst->camera.pos.v, isst->camera.pos.v, vec); + VADD2(isst->camera.pos, isst->camera.pos, vec); if(dist < 0) VSCALE(vec, vec, -1); - VADD2(isst->camera.focus.v, isst->camera.pos.v, vec); + VADD2(isst->camera.focus, isst->camera.pos, vec); } void @@ -63,20 +63,20 @@ isst->dirty = 1; VSET(up, 0, 0, 1); - VSUB2(dir, isst->camera.focus.v, isst->camera.pos.v); + VSUB2(dir, isst->camera.focus, isst->camera.pos); VCROSS(vec, dir, up); VUNITIZE(vec); VSCALE(vec, vec, isst->dt * dist * isst->tie->radius); - VADD2(isst->camera.pos.v, isst->camera.pos.v, vec); - VADD2(isst->camera.focus.v, isst->camera.pos.v, dir); + VADD2(isst->camera.pos, isst->camera.pos, vec); + VADD2(isst->camera.focus, isst->camera.pos, dir); } void move_float(struct isst_s * isst, double dist) { isst->dirty = 1; - isst->camera.pos.v[2] += isst->tie->radius*isst->dt*dist; - isst->camera.focus.v[2] += isst->tie->radius*isst->dt*dist; + isst->camera.pos[2] += isst->tie->radius*isst->dt*dist; + isst->camera.focus[2] += isst->tie->radius*isst->dt*dist; } void @@ -85,9 +85,9 @@ vect_t vec; isst->dirty = 1; - VSUB2(vec, isst->tie->mid, isst->camera.pos.v); + VSUB2(vec, isst->tie->mid, isst->camera.pos); VUNITIZE(vec); - VADD2(isst->camera.focus.v, isst->camera.pos.v, vec); + VADD2(isst->camera.focus, isst->camera.pos, vec); } void @@ -98,7 +98,7 @@ isst->dirty = 1; /* generate az/el (oddly, this generates degrees instead of radians) */ - VSUB2(vec, isst->camera.pos.v, isst->camera.focus.v); + VSUB2(vec, isst->camera.pos, isst->camera.focus); VUNITIZE(vec); AZEL_FROM_V3DIR(az, el, vec); az = az * -DEG2RAD - x; @@ -112,7 +112,7 @@ /* generate the new lookat point */ V3DIR_FROM_AZEL(vec, az, el); - VADD2(isst->camera.focus.v, isst->camera.pos.v, vec); + VADD2(isst->camera.focus, isst->camera.pos, vec); } void @@ -216,11 +216,11 @@ /* clear all the hit list */ for(BU_LIST_FOR(mesh, adrt_mesh_s, &isst->meshes->l)) mesh->flags &= ~ADRT_MESH_HIT; - VSUB2(vec, isst->camera.focus.v, isst->camera.pos.v); + VSUB2(vec, isst->camera.focus, isst->camera.pos); #if _WIN32 - sprintf(buf, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos.v), V3ARGS(vec)); + sprintf(buf, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos), V3ARGS(vec)); #else - snprintf(buf, BUFSIZ, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos.v), V3ARGS(vec)); + snprintf(buf, BUFSIZ, "#(%f %f %f) #(%f %f %f)", V3ARGS(isst->camera.pos), V3ARGS(vec)); #endif shader(isst, "cut", buf); move_strafe(isst, -0.05 / isst->dt); @@ -249,7 +249,7 @@ #else snprintf(buf, BUFSIZ, "%f", val); #endif - shader(isst, (const char *)render_shader_load_plugin(".libs/libmyplugin.0.dylib"), buf); + shader(isst, (const char *)render_shader_load_plugin(".libs/libmyplugin.so"), buf); break; case SDLK_UP: case 'e': vel[1] = 1; break; Modified: isst/trunk/sdl/isst.h =================================================================== --- isst/trunk/sdl/isst.h 2011-03-04 20:38:36 UTC (rev 43701) +++ isst/trunk/sdl/isst.h 2011-03-04 20:44:03 UTC (rev 43702) @@ -33,9 +33,8 @@ int ogl, sflags, w, h, gs, ui, dirty, ft; double dt, fps, uic; #ifdef HAVE_OPENGL - int texid, fonttexid; + int texid; void *texdata; - void *fonttextbuf; #endif char *cmdbuf; }; Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2011-03-04 20:38:36 UTC (rev 43701) +++ isst/trunk/sdl/main.c 2011-03-04 20:44:03 UTC (rev 43702) @@ -111,14 +111,6 @@ isst->texdata = realloc(isst->texdata, isst->camera.w * isst->camera.h * 3); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, isst->camera.w, isst->camera.h, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->texdata); - glGenTextures(1, &(isst->fonttexid)); - glBindTexture (GL_TEXTURE_2D, isst->fonttexid); - glPixelStorei (GL_UNPACK_ALIGNMENT, 1); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, FONT_SIZE, FONT_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, isst->fonttextbuf); - glDisable(GL_LIGHTING); glViewport(0,0,isst->r.w, isst->r.h); glMatrixMode (GL_PROJECTION); @@ -187,8 +179,8 @@ render_camera_init(&isst->camera, bu_avail_cpus()); isst->camera.type = RENDER_CAMERA_PERSPECTIVE; isst->camera.fov = 25; - VSETALL(isst->camera.pos.v, isst->tie->radius); - VMOVE(isst->camera.focus.v, isst->tie->mid); + VSETALL(isst->camera.pos, isst->tie->radius); + VMOVE(isst->camera.focus, isst->tie->mid); render_phong_init(&isst->camera.render, NULL); return isst; } @@ -226,31 +218,6 @@ glTexCoord2d(1, 1); glVertex3f(isst->r.w, isst->r.h*(.75+.25*(1-isst->uic)), 0); #endif glEnd(); - if(*isst->cmdbuf) { - char *cmd = isst->cmdbuf; - int i = 0; - double FONTSIZE; - - FONTSIZE = isst->r.h / 12.0; - - glColor3f(0,1,0.5); - glBindTexture(GL_TEXTURE_2D, isst->fonttexid); - while(*cmd) { - double x, y, s = 1.0/16.0; - x = (double)((*cmd)&0xf)/16.0; - y = (double)((*cmd)>>4)/16.0; - - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2d(x, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); - glTexCoord2d(x, y+s); glVertex3f(0.5*i*FONTSIZE, isst->r.h-FONTSIZE, 0); - i++; - glTexCoord2d(x+s, y); glVertex3f(0.5*i*FONTSIZE, isst->r.h, 0); - glTexCoord2d(x+s, y+s); glVertex3f(0.5*i*FONTSIZE, isst->r.h-FONTSIZE, 0); - - glEnd(); - cmd++; - } - } SDL_GL_SwapBuffers(); isst->dirty = 0; #endif @@ -340,22 +307,7 @@ isst->camera.gridsize = isst->tie->radius * 2; isst->ft = 0; -#ifdef HAVE_OPENGL - { - int fd; - - isst->fonttextbuf = malloc(1024*1024*3); - fd = open("trebuchet_bold.pix", O_RDONLY); - if(fd == -1) { - perror("Font file"); - exit(-1); - } - read(fd, isst->fonttextbuf, 3*FONT_SIZE*FONT_SIZE); - close(fd); - } -#endif - - if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { + if(render_shader_load_plugin(".libs/libmyplugin.so")) { bu_log("Failed loading plugin\n"); } resize_isst(isst); Modified: isst/trunk/sdl/myplugin.c =================================================================== --- isst/trunk/sdl/myplugin.c 2011-03-04 20:38:36 UTC (rev 43701) +++ isst/trunk/sdl/myplugin.c 2011-03-04 20:44:03 UTC (rev 43702) @@ -21,7 +21,7 @@ }; static void * -hit(tie_ray_t *ray, tie_id_t *id, tie_tri_t *tri, void *ptr) +hit(struct tie_ray_s *UNUSED(ray), struct tie_id_s *id, struct tie_tri_s *tri, void *ptr) { struct hitdata_s *hd = (struct hitdata_s *)ptr; fastf_t dist; @@ -60,9 +60,9 @@ } void -adrt_plugin_work(render_t *r, tie_t *t, tie_ray_t *ray, TIE_3 *pixel) +adrt_plugin_work(render_t *r, struct tie_s *t, struct tie_ray_s *ray, TIE_3 *pixel) { - tie_id_t id; + struct tie_id_s id; struct hitdata_s hitdata; hitdata.render = r; hitdata.a = 1.0; @@ -71,6 +71,7 @@ tie_work(t, ray, &id, hit, &hitdata); VSETALL(pixel->v, hitdata.color); +#if 0 switch(hitdata.in) { case HIT_IN: VSET(pixel->v, 1, 0, 0); @@ -82,10 +83,11 @@ VSET(pixel->v, 0, 1, 0); break; } +#endif } void -adrt_plugin_free(render_t *r) +adrt_plugin_free(render_t *UNUSED(r)) { return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-05 19:28:35
|
Revision: 39009 http://brlcad.svn.sourceforge.net/brlcad/?rev=39009&view=rev Author: erikgreenwald Date: 2010-05-05 19:28:27 +0000 (Wed, 05 May 2010) Log Message: ----------- adjust include stuff Modified Paths: -------------- isst/trunk/sdl/event.c isst/trunk/sdl/main.c Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-05 19:25:51 UTC (rev 39008) +++ isst/trunk/sdl/event.c 2010-05-05 19:28:27 UTC (rev 39009) @@ -23,15 +23,21 @@ * */ +#ifdef HAVE_CONFIG_H +# include "isst_config.h" +#endif + #include <stdio.h> -#include <sys/time.h> +#ifdef HAVE_SYS_TIME_H +# include <sys/time.h> +#endif #include <SDL.h> -#include <tie/tie.h> -#include <tie/adrt.h> -#include <tie/adrt_struct.h> -#include <tie/camera.h> +#include <tie.h> +#include <adrt.h> +#include <adrt_struct.h> +#include <camera.h> #include "isst.h" Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-05 19:25:51 UTC (rev 39008) +++ isst/trunk/sdl/main.c 2010-05-05 19:28:27 UTC (rev 39009) @@ -23,15 +23,26 @@ * */ +#ifdef HAVE_CONFIG_H +# include "isst_config.h" +#endif + #include <stdio.h> + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#ifdef HAVE_SYS_TIME_H #include <sys/time.h> +#endif #include <SDL.h> -#include <tie/tie.h> -#include <tie/adrt.h> -#include <tie/adrt_struct.h> -#include <tie/camera.h> +#include <tie.h> +#include <adrt.h> +#include <adrt_struct.h> +#include <camera.h> struct isst_s { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2010-05-06 19:55:35
|
Revision: 39062 http://brlcad.svn.sourceforge.net/brlcad/?rev=39062&view=rev Author: erikgreenwald Date: 2010-05-06 19:55:29 +0000 (Thu, 06 May 2010) Log Message: ----------- trivial plugin to demo how to use the facility. Modified Paths: -------------- isst/trunk/sdl/Makefile.am isst/trunk/sdl/event.c isst/trunk/sdl/main.c Added Paths: ----------- isst/trunk/sdl/myplugin.c Modified: isst/trunk/sdl/Makefile.am =================================================================== --- isst/trunk/sdl/Makefile.am 2010-05-06 19:55:17 UTC (rev 39061) +++ isst/trunk/sdl/Makefile.am 2010-05-06 19:55:29 UTC (rev 39062) @@ -1,6 +1,11 @@ bin_PROGRAMS=isst_sdl +lib_LTLIBRARIES=libmyplugin.la + isst_sdl_SOURCES=main.c event.c + +libmyplugin_la_SOURCES=myplugin.c + AM_CFLAGS=${SDL_CFLAGS} @TIE_CFLAGS@ AM_LDFLAGS=${SDL_LIBS} @TIE_LIBS@ Modified: isst/trunk/sdl/event.c =================================================================== --- isst/trunk/sdl/event.c 2010-05-06 19:55:17 UTC (rev 39061) +++ isst/trunk/sdl/event.c 2010-05-06 19:55:29 UTC (rev 39062) @@ -132,6 +132,7 @@ case '2': render_shader_init(&isst->camera.render, "normal", NULL); break; case '3': render_shader_init(&isst->camera.render, "depth", NULL); break; case '4': render_shader_init(&isst->camera.render, "component", NULL); break; + case '=': render_shader_init(&isst->camera.render, "myplugin", NULL); break; case 'e': case SDLK_UP: move_walk(isst, dt); break; case 'd': Modified: isst/trunk/sdl/main.c =================================================================== --- isst/trunk/sdl/main.c 2010-05-06 19:55:17 UTC (rev 39061) +++ isst/trunk/sdl/main.c 2010-05-06 19:55:29 UTC (rev 39062) @@ -163,6 +163,9 @@ isst->ogl = ogl; isst->w = w; isst->h = h; + if(render_shader_load_plugin(".libs/libmyplugin.0.dylib")) { + printf("Failed loading plugin"); + } resize_isst(isst); /* main event loop */ Added: isst/trunk/sdl/myplugin.c =================================================================== --- isst/trunk/sdl/myplugin.c (rev 0) +++ isst/trunk/sdl/myplugin.c 2010-05-06 19:55:29 UTC (rev 39062) @@ -0,0 +1,29 @@ +#include "tie.h" +#include "camera.h" + +const char name[] = "myplugin"; + +void +adrt_plugin_work(render_t *r, tie_t *t, tie_ray_t *ray, TIE_3 *pixel) +{ + tie_id_t id; + adrt_mesh_t *mesh; + if ((mesh = (adrt_mesh_t *)tie_work(t, ray, &id, render_hit, NULL))) { + pixel->v[0] = 1.0; + pixel->v[1] = 0.0; + pixel->v[2] = 1.0; + } +} + +void +adrt_plugin_free(render_t *r) +{ + return; +} + +void +init(render_t *r, char *usr) +{ + r->work = adrt_plugin_work; + r->free = adrt_plugin_free; +} Property changes on: isst/trunk/sdl/myplugin.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |