int main(int argc, char **argv) { gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *drawing = gtk_drawing_area_new(); GdkGLConfig *glconfig = gdk_gl_config_new_by_mode((GdkGLConfigMode)( GDK_GL_MODE_RGBA | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE | GDK_GL_MODE_ALPHA)); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(window, "key-press-event", G_CALLBACK(on_key_press), NULL); g_signal_connect(drawing, "expose-event", G_CALLBACK(on_expose), NULL); g_signal_connect(drawing, "configure-event", G_CALLBACK(on_configure), NULL); gtk_widget_set_gl_capability(drawing, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE); gtk_container_add(GTK_CONTAINER(window), drawing); gtk_widget_show_all(window); /* OpenGL setup */ GdkGLContext *glcontext = gtk_widget_get_gl_context(GTK_WIDGET(drawing)); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(drawing)); gdk_gl_drawable_gl_begin(gldrawable, glcontext); /* Load texture */ texl = load_tex("texls.png"); texr = load_tex("texrs.png"); tex = load_tex("tex.png"); gtk_main(); gdk_gl_drawable_gl_end(gldrawable); }
void OpcodeState::draw( uint8_t *ycbcr ) { load_tex( GL_TEXTURE0, Y_tex, framewidth, frameheight, ycbcr ); load_tex( GL_TEXTURE1, Cb_tex, framewidth/2, frameheight/2, ycbcr + framewidth * frameheight ); load_tex( GL_TEXTURE2, Cr_tex, framewidth/2, frameheight/2, ycbcr + framewidth * frameheight + framewidth * frameheight / 4); paint(); }
void load_obj(t_object *obj, char *filename) { int fd; char *line; ft_exit((fd = open(filename, O_RDONLY)) < 0, "Can't read file"); obj->vertex_buffer_size = obj->index_buffer_size = obj->normal_buffer_size = obj->tex_buffer_size = 0; while (get_next_line(fd, &line) > 0) { if (ft_strlen(line) < 3 || line[0] == '#') ; else if (line[0] == 'o') ft_strcpy((char *)obj->name, line + 2); else if (line[0] == 'v' && line[1] == ' ') load_vertex(obj, line + 1); else if (line[0] == 'v' && line[1] == 'n') load_normal(obj, line + 2); else if (line[0] == 'v' && line[1] == 't') load_tex(obj, line + 2); else if (line[0] == 'f' && line[1] == ' ') load_index(obj, line + 1); ft_memdel((void **)&line); } close(fd); print_obj(obj); }
void drawFrame(int buffer, long frame) { realityViewportTranslate(context, 0.0, 0.0, 0.0, 0.0); realityViewportScale(context, 1.0, 1.0, 1.0, 0.0); realityZControl(context, 0, 1, 1); // disable viewport culling // Enable alpha blending. realityBlendFunc(context, NV30_3D_BLEND_FUNC_SRC_RGB_SRC_ALPHA | NV30_3D_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA, NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_ALPHA | NV30_3D_BLEND_FUNC_DST_ALPHA_ZERO); realityBlendEquation(context, NV40_3D_BLEND_EQUATION_RGB_FUNC_ADD | NV40_3D_BLEND_EQUATION_ALPHA_FUNC_ADD); realityBlendEnable(context, 1); realityViewport(context, res.width, res.height); setupRenderTarget(buffer); // set the clear color realitySetClearColor(context, 0x00000000); // Black, because it looks cool // and the depth clear value realitySetClearDepthValue(context, 0xffff); // Clear the buffers realityClearBuffers(context, REALITY_CLEAR_BUFFERS_COLOR_R | REALITY_CLEAR_BUFFERS_COLOR_G | REALITY_CLEAR_BUFFERS_COLOR_B | NV30_3D_CLEAR_BUFFERS_COLOR_A | NV30_3D_CLEAR_BUFFERS_STENCIL | REALITY_CLEAR_BUFFERS_DEPTH); // Load shaders, because the rsx won't do anything without them. realityLoadVertexProgram_old(context, &nv40_vp); realityLoadFragmentProgram_old(context, &nv30_fp); // Load texture load_tex(0, tx_offset, dice.width, dice.height, dice.width*4, NV40_3D_TEX_FORMAT_FORMAT_A8R8G8B8, 1); // Generate quad realityVertexBegin(context, REALITY_QUADS); { realityTexCoord2f(context, 0.0, 0.0); realityVertex4f(context, 600.0, 300.0, 0.0, 1.0); realityTexCoord2f(context, 1.0, 0.0); realityVertex4f(context, 1400.0, 300.0, 0.0, 1.0); realityTexCoord2f(context, 1.0, 1.0); realityVertex4f(context, 1400.0, 900.0, 0.0, 1.0); realityTexCoord2f(context, 0.0, 1.0); realityVertex4f(context, 600.0, 900.0, 0.0, 1.0); } realityVertexEnd(context); }
bool Interface::init(const char *title, int w, int h, bool fullscreen) { #ifdef USE_OPENGL #else static const EGLint attribs[] = { EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_NONE }; static const EGLint ctx_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; #endif this->m_fullscreen = fullscreen; if (!this->create_wnd(title, w, h)) { ERROR_MESSAGE("Interface: Cannot create window\n"); return false; } this->resize_gl(w, h); // Set Up Our Perspective GL Screen this->init_gl(); // Initialize Our Newly Created GL Window if (!load_tex(TEXTURE_BLACK, TEXTURE_BLACK_IDX) || !load_tex(TEXTURE_WHITE, TEXTURE_WHITE_IDX)) { ERROR_MESSAGE("Interface: Unable to load system images\n"); return false; } return true; }
void Terrain3D::loadTex() { if(Terrain3D::texture[0] != 0) return; Terrain3D::texture[0] = load_tex("tex/terrain.tga", true); Terrain3D::texSkybox[BACK] = load_tex("tex/bk.tga"); Terrain3D::texSkybox[FRONT] = load_tex("tex/ft.tga"); Terrain3D::texSkybox[LEFT] = load_tex("tex/lt.tga"); Terrain3D::texSkybox[RIGHT] = load_tex("tex/rt.tga"); Terrain3D::texSkybox[UP] = load_tex("tex/up.tga"); }
static void Init( int argc, char *argv[] ) { GLuint texObj[2]; GLint units; if (!glutExtensionSupported("GL_ARB_multitexture")) { printf("Sorry, GL_ARB_multitexture not supported by this renderer.\n"); exit(1); } if (!glutExtensionSupported("GL_EXT_paletted_texture")) { printf("Sorry, GL_EXT_paletted_texture not supported by this renderer.\n"); exit(1); } glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &units); printf("%d texture units supported\n", units); /* allocate two texture objects */ glGenTextures(2, texObj); /* setup texture obj 0 */ glBindTexture(GL_TEXTURE_2D, texObj[0]); #ifdef LINEAR_FILTER /* linear filtering looks much nicer but is much slower for Mesa */ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); foo #else glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); #endif glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); load_tex(TEXTURE_1_FILE, 0); #if 0 if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) { printf("Error: couldn't load texture image\n"); exit(1); } #endif /* setup texture obj 1 */ glBindTexture(GL_TEXTURE_2D, texObj[1]); #ifdef LINEAR_FILTER /* linear filtering looks much nicer but is much slower for Mesa */ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); foo #else glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); #endif glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); load_tex(TEXTURE_2_FILE, 1); #if 0 if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) { printf("Error: couldn't load texture image\n"); exit(1); } #endif /* now bind the texture objects to the respective texture units */ #ifdef GL_ARB_multitexture glActiveTextureARB(GL_TEXTURE0_ARB); glBindTexture(GL_TEXTURE_2D, texObj[0]); glActiveTextureARB(GL_TEXTURE1_ARB); glBindTexture(GL_TEXTURE_2D, texObj[1]); #endif glShadeModel(GL_FLAT); glClearColor(0.3, 0.3, 0.4, 1.0); ModeMenu(TEXBOTH); if (argc > 1 && strcmp(argv[1], "-info")==0) { printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); } }