vs 2010 C++:can i use texture1D and texture2D at the same program?
Started by nickme, Nov 22 2012 10:20 PM
8 replies to this topic
#1 Members - Reputation: 193
Posted 22 November 2012 - 10:20 PM
hi
i'd recently written a program about fractals. i would like to show a png file to the screen at the beginning of the program to illustrate the various key broad commands for using the program. in my fractal program, i used a raw file texture1D for palette for the fractals. because the splashscreen is 2d, when i ran the program, the color of my fractals is different. i wonder if that is the problem with my program or that opengl does not allow one to use both texture 1D and 2D at the same time.
thanks
i'd recently written a program about fractals. i would like to show a png file to the screen at the beginning of the program to illustrate the various key broad commands for using the program. in my fractal program, i used a raw file texture1D for palette for the fractals. because the splashscreen is 2d, when i ran the program, the color of my fractals is different. i wonder if that is the problem with my program or that opengl does not allow one to use both texture 1D and 2D at the same time.
thanks
Ad:
#2 Members - Reputation: 4604
Posted 23 November 2012 - 02:03 AM
Yes. There should be no issues using 1D,2D,3D,cube whatever textures concurrentlyis the problem with my program
Ashaman
My game: Gnoblins
Developer journal about Gnoblins
Small goodies: Simple alpha transparency in deferred shader
My game: Gnoblins
Developer journal about Gnoblins
Small goodies: Simple alpha transparency in deferred shader
#3 Members - Reputation: 193
Posted 23 November 2012 - 10:21 AM
[source lang="cpp"]#include <math.h>#include <stdio.h>#include <gl/glut.h>GLuint SplashScreen;const GLint win_sizeX = 1024, win_sizeY = 1024;const GLint w = 1024.0, h = 1024; const GLdouble wleft = -win_sizeX *0.5, wright = win_sizeX *0.5, wtop = win_sizeY * 0.5, wbottom = - win_sizeY * 0.5;void clear(){ glClearColor(1.0, 1.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT);}GLuint LoadTexture2D( const char * filename, int width, int height){ GLuint texture; FILE * file; file = fopen( filename, "rb" ); if ( file == NULL ) { system("PAUSE"); exit(1); } GLubyte * data = new unsigned char [width * height * 4]; fread( data, 1, width * height * 4, file ); fclose( file ); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures( 1, &texture ); glBindTexture( GL_TEXTURE_2D, texture ); glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); delete [] data; return texture;}void display_splash_screen(int time){ clear(); glEnable( GL_TEXTURE_2D ); glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBindTexture( GL_TEXTURE_2D, SplashScreen); glBegin( GL_QUADS ); glTexCoord2d(0.0,0.0); glVertex2d(wleft, wtop); glTexCoord2d(1.0,0.0); glVertex2d(wright, wtop); glTexCoord2d(1.0,1.0); glVertex2d(wright, wbottom); glTexCoord2d(0.0,1.0); glVertex2d(wleft, wbottom); glEnd(); glFlush(); Sleep(time);}void init(){ glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); glShadeModel(GL_FLAT); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); SplashScreen = LoadTexture2D("SplashScreen.raw", w, h);}void render() { clear(); display_splash_screen(0);}void winReshapeFcn(GLint newWidth, GLint newHeight){ glutReshapeWindow(w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(wleft, wright, wbottom, wtop); glMatrixMode(GL_MODELVIEW);}void processNormalKeys(unsigned char key, int x, int y){ if (key == 27) exit(0);}int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowPosition(0, 0); glutInitWindowSize(win_sizeX, win_sizeY); glutCreateWindow(" Texture testing "); init(); glutIgnoreKeyRepeat(0); glutReshapeFunc(winReshapeFcn); glutDisplayFunc(render); glutKeyboardFunc(processNormalKeys); glutMainLoop(); glDeleteTextures(1, &SplashScreen); return 0;}[/source]
hi
i copy and paste the program to a smaller program to test the 2d texture loading function. i include the source code for the program below. following that is the splashscreen that it suppose to render and finally the actual output from the program.
thank in advance.
hi
i copy and paste the program to a smaller program to test the 2d texture loading function. i include the source code for the program below. following that is the splashscreen that it suppose to render and finally the actual output from the program.
thank in advance.
#5 Members - Reputation: 3801
Posted 23 November 2012 - 11:10 AM
Is your .raw file a 32-bpp 1024x1024 image? If not, this can be expected to look wrong.
It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.
#6 Members - Reputation: 193
Posted 23 November 2012 - 12:13 PM
hi mhagain:
i checked the dimension of the raw file with photo shop, it is 1024X1024. but i am not sure what the bpp is. how to find that out or change it? i originally created the splashscreen in png format, because i don't know how to load png file, i convert it to raw file with "total image converter" i found on the web.
thanks
i checked the dimension of the raw file with photo shop, it is 1024X1024. but i am not sure what the bpp is. how to find that out or change it? i originally created the splashscreen in png format, because i don't know how to load png file, i convert it to raw file with "total image converter" i found on the web.
thanks
#7 Members - Reputation: 193
Posted 23 November 2012 - 05:51 PM
hi
finally, i got the above program to works. however, when i added the LoadTexre2D to my fractals program, it messed up the color of my fractals when rendered after the display splash screen. i tried to put glLoadIdentity() and glPushMatrix and glPopMatrix between display as it to insulate the color buffer but the problem still persists. i know, that is not very smart.
what should i look at? is it because i used texture1D and texture2D?
any advice will be appreciated.
finally, i got the above program to works. however, when i added the LoadTexre2D to my fractals program, it messed up the color of my fractals when rendered after the display splash screen. i tried to put glLoadIdentity() and glPushMatrix and glPopMatrix between display as it to insulate the color buffer but the problem still persists. i know, that is not very smart.
what should i look at? is it because i used texture1D and texture2D?
any advice will be appreciated.
Edited by nickme, 23 November 2012 - 06:38 PM.






