Jump to content

  • Log In with Google      Sign In   
  • Create Account


vs 2010 C++:can i use texture1D and texture2D at the same program?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
8 replies to this topic

#1 nickme   Members   -  Reputation: 205

Like
0Likes
Like

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

Sponsor:

#2 Ashaman73   Crossbones+   -  Reputation: 6568

Like
0Likes
Like

Posted 23 November 2012 - 02:03 AM

is the problem with my program

Yes. There should be no issues using 1D,2D,3D,cube whatever textures concurrently :D

#3 nickme   Members   -  Reputation: 205

Like
0Likes
Like

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.

Attached Thumbnails

  • Screenshot (88).png


#4 nickme   Members   -  Reputation: 205

Like
0Likes
Like

Posted 23 November 2012 - 10:31 AM

apparrently, i can only attach one image at one time. here is the splash screen of the actual file. it seem i can not upload the raw file so i loaded the equivalent png file instead.

Attached Thumbnails

  • SplashScreen.png


#5 mhagain   Crossbones+   -  Reputation: 7344

Like
0Likes
Like

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 nickme   Members   -  Reputation: 205

Like
0Likes
Like

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

#7 nickme   Members   -  Reputation: 205

Like
0Likes
Like

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.

Edited by nickme, 23 November 2012 - 06:38 PM.


#8 nickme   Members   -  Reputation: 205

Like
0Likes
Like

Posted 23 November 2012 - 10:40 PM

the following attached file show a image when i ran the fractal program without the splashscreen 2D texture. the next attachment show the fractal rendered with splashscreen 2D texture, it looks like a negative film.

Attached Thumbnails

  • Screenshot (17).png
  • Screenshot (89).png


#9 nickme   Members   -  Reputation: 205

Like
0Likes
Like

Posted 25 November 2012 - 04:09 PM

hi,

i finally figured out what was wrong with my program. i did not but the glDisable(GL_TEXTURE_2D); after i finished using it. so when i used texture2D, i had the problem that it did.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS