|
i have two program that can run..but i can't combine it..
for your information i still studying..
the first program is:
#include <stdlib.h>
#include <gl glut.h="">
GLfloat vertices [][3] = {{-0.3, -0.3, 0.3}, {-0.23,0.3,0.3} ,
{0.3,0.3,0.3}, {0.3,-0.3,0.3}, {-0.3,-0.3,-0.3} ,
{-0.3,0.3,-0.3}, {0.3,0.3,-0.3},{0.3,-0.3,-0.3}};
GLfloat colors[][3] = {
{1.0,0.0,0.0},{0.0,1.0,1.0},
{1.0,1.0,0.0}, {0.0,1.0,0.0},
{0.0,0.0,1.0}, {1.0,0.0,1.0},
{0.0,0.0,0.0}, {1.0,1.0,1.0}};
void polygon (int a, int b, int c, int d)
{
glBegin(GL_POLYGON);
glColor3fv(colors[a]);
glTexCoord2f(0.0,0.0);
glVertex3fv(vertices[a]);
glColor3fv(colors[b]);
glTexCoord2f(0.0,1.0);
glVertex3fv(vertices[b]);
glColor3fv(colors[c]);
glTexCoord2f(1.0,1.0);
glVertex3fv(vertices[c]);
glColor3fv(colors[d]);
glTexCoord2f(1.0,0.0);
glVertex3fv(vertices[d]);
glEnd();
}
void colorcube()
{
polygon(0,3,2,1);
polygon(2,3,7,6);
polygon(3,0,4,7);
polygon(1,2,6,5);
polygon(4,5,6,7);
polygon(5,4,0,1);
}
static GLfloat theta[]={0.0,0.0,0.0};
static GLint axis = 2 ;
void display (void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(theta[0],1.0,0.0,0.0);
glRotatef(theta[1],0.0,1.0,0.0);
glRotatef(theta[2],0.0,0.0,1.0);
colorcube();
glutSwapBuffers();
}
void spinCube()
{
theta [axis] += 5.0; //speed for cube
if (theta[axis] > 360.0) theta[axis] -= 360.0;
glutPostRedisplay();
}
void mouse (int btn, int state, int x, int y)
{
if(btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
axis = 0;
if (btn == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN)
axis = 1;
if (btn == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
axis = 2;
}
void myReshape(int w, int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w <= h)
glOrtho(-2.0,2.0,-2.0 * (GLfloat) h /(GLfloat)
w,2.0 * (GLfloat)h / (GLfloat) w,
-10.0,10.0);
else
glOrtho(-2.0 * (GLfloat)w /(GLfloat)h,
2.0 * (GLfloat) w / (GLfloat)h,-2.0,2.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char **argv)
{
GLubyte image [64][64][3];
int i,j,r,c;
for (i =0; i<64; i++)
{
for (j=0; j<64; j++)
{
c = (((i&0x8) == 0)^((j&0x8)==0))*255;
image[i][j][0] = (GLubyte) c;
image[i][j][1] = (GLubyte) c;
image[i][j][2] = (GLubyte) c;
}
}
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("color cube");
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glutIdleFunc(spinCube);
glutMouseFunc(mouse);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,64,64,0,GL_RGB,GL_UNSIGNED_BYTE, image);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glClearColor(1.0,0.5,1.0,1.0);
glColor3f(1.0,1.0,1.0);
glutMainLoop();
}
and the second program is:
/* field.c - by Tom McReynolds, SGI */
/* Using the accumulation buffer for depth of field (camera focus blur). */
#include <gl glut.h="">
#include <stdlib.h>
#include <stdio.h>
const GLdouble FRUSTDIM = 100.f;
const GLdouble FRUSTNEAR = 320.f;
const GLdouble FRUSTFAR = 660.f;
/*
** Create a single component texture map
*/
GLfloat *make_texture(int maxs, int maxt)
{
int s, t;
static GLfloat *texture;
texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat));
for(t = 0; t < maxt; t++) {
for(s = 0; s < maxs; s++) {
texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1);
}
}
return texture;
}
//enum {SPHERE = 1, CONE};
void
render(void)
{
/* material properties for objects in scene */
static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f};
glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
/*
** Note: wall verticies are ordered so they are all front facing
** this lets me do back face culling to speed things up.
*/
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat);
/* floor */
/* make the floor textured */
glEnable(GL_TEXTURE_2D);
/*
** Since we want to turn texturing on for floor only, we have to
** make floor a separate glBegin()/glEnd() sequence. You can't
** turn texturing on and off between begin and end calls
*/
glBegin(GL_QUADS);
glNormal3f(0.f, 1.f, 0.f);
glTexCoord2i(0, 0);
glVertex3f(-100.f, -100.f, -320.f);
glTexCoord2i(1, 0);
glVertex3f( 100.f, -100.f, -320.f);
glTexCoord2i(1, 1);
glVertex3f( 100.f, -100.f, -640.f);
glTexCoord2i(0, 1);
glVertex3f(-100.f, -100.f, -640.f);
glEnd();
glDisable(GL_TEXTURE_2D);
/* walls */
glBegin(GL_QUADS);
/* left wall */
glNormal3f(1.f, 0.f, 0.f);
glVertex3f(-100.f, -100.f, -320.f);
glVertex3f(-100.f, -100.f, -640.f);
glVertex3f(-100.f, 100.f, -640.f);
glVertex3f(-100.f, 100.f, -320.f);
/* right wall */
glNormal3f(-1.f, 0.f, 0.f);
glVertex3f( 100.f, -100.f, -320.f);
glVertex3f( 100.f, 100.f, -320.f);
glVertex3f( 100.f, 100.f, -640.f);
glVertex3f( 100.f, -100.f, -640.f);
/* ceiling */
glNormal3f(0.f, -1.f, 0.f);
glVertex3f(-100.f, 100.f, -320.f);
glVertex3f(-100.f, 100.f, -640.f);
glVertex3f( 100.f, 100.f, -640.f);
glVertex3f( 100.f, 100.f, -320.f);
/* back wall */
glNormal3f(0.f, 0.f, 1.f);
glVertex3f(-100.f, -100.f, -640.f);
glVertex3f( 100.f, -100.f, -640.f);
glVertex3f( 100.f, 100.f, -640.f);
glVertex3f(-100.f, 100.f, -640.f);
glEnd();
glPushMatrix();
glTranslatef(-80.f, -60.f, -420.f);
// glCallList(SPHERE);
glPopMatrix();
glPushMatrix();
glTranslatef(-20.f, -80.f, -600.f);
// glCallList(CONE);
glPopMatrix();
if(glGetError()) /* to catch programming errors; should never happen */
printf("Oops! I screwed up my OpenGL calls somewhere\n");
glFlush(); /* high end machines may need this */
}
enum {NONE, FIELD};
int rendermode = NONE;
void
menu(int selection)
{
rendermode = selection;
glutPostRedisplay();
}
GLdouble focus = 420.;
/* Called when window needs to be redrawn */
void redraw(void)
{
int i, j;
int min, max;
int count;
GLfloat scale, dx, dy;
switch(rendermode) {
case NONE:
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, FRUSTNEAR, FRUSTFAR);
glMatrixMode(GL_MODELVIEW);
render();
break;
case FIELD:
min = -2;
max = -min + 1;
count = -2 * min + 1;
count *= count;
scale = 2.f;
glClear(GL_ACCUM_BUFFER_BIT);
for(j = min; j < max; j++) {
for(i = min; i < max; i++) {
dx = scale * i * FRUSTNEAR/focus;
dy = scale * j * FRUSTNEAR/focus;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-FRUSTDIM + dx,
FRUSTDIM + dx,
-FRUSTDIM + dy,
FRUSTDIM + dy,
FRUSTNEAR,
FRUSTFAR);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(scale * i, scale * j, 0.f);
render();
glAccum(GL_ACCUM, 1.f/count);
}
}
glAccum(GL_RETURN, 1.f);
break;
}
glutSwapBuffers();
}
/* ARGSUSED1 */
void key(unsigned char key, int x, int y)
{
if(key == '\033')
exit(0);
}
const int TEXDIM = 256;
/* Parse arguments, and set up interface between OpenGL and window system */
int
main(int argc, char *argv[])
{
GLfloat *tex;
static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f};
static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f};
static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f};
GLUquadricObj *sphere, *cone, *base;
glutInit(&argc, argv);
glutInitWindowSize(512, 512);
glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM|GLUT_DOUBLE);
(void)glutCreateWindow("depth of field");
glutDisplayFunc(redraw);
glutKeyboardFunc(key);
glutCreateMenu(menu);
glutAddMenuEntry("Normal", NONE);
glutAddMenuEntry("Depth of Field", FIELD);
glutAttachMenu(GLUT_RIGHT_BUTTON);
/* turn on features */
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
/* place light 0 in the right place */
glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
/* remove back faces to speed things up */
glCullFace(GL_BACK);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
// glNewList(SPHERE, GL_COMPILE);
/* make display lists for sphere and cone; for efficiency */
sphere = gluNewQuadric();
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat);
gluSphere(sphere, 20.f, 20, 20);
gluDeleteQuadric(sphere);
glEndList();
// glNewList(CONE, GL_COMPILE);
cone = gluNewQuadric();
base = gluNewQuadric();
glRotatef(-90.f, 1.f, 0.f, 0.f);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat);
gluDisk(base, 0., 20., 20, 1);
gluCylinder(cone, 20., 0., 60., 20, 20);
gluDeleteQuadric(cone);
gluDeleteQuadric(base);
glEndList();
/* load pattern for current 2d texture */
tex = make_texture(TEXDIM, TEXDIM);
glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex);
free(tex);
glutMainLoop();
return 0; /* ANSI C requires main to return int. */
}
please help..thanks
|
|
|
|
|
Tried to use this in Visual Studio 2005 with no success. How would one go about upgrading it to work.
Thanks for any insight.
|
|
|
|
|
See thread below titled:
"bug fix with Microsoft Visual Studio .NET 2003".
There is a fix outlined in there for 2005 as well.
|
|
|
|
|
I need a openGL coded human face like any smiley , which should have some cartoony hair too.
Please can anybody provide me as early as possible!
Please!
I am witing for any help ! here!
Maddy
|
|
|
|
|
(warning: I am a newbie coder)
I want to do an MDI app using C++ (VS.NET). My basic idea is to have an MDI child dialog with input boxes and a "go" button. From them on, these parameters are passed on to another class that chunks away calculations on them and returns draw commands. I would then like for another MDI child window (basically, an OpenGL "canvas") to receive and render them. I tried looking up examples for this, but they are either WinAPI (cryptic) or MFC and I was hoping to find a .NET "component" (with all advantages therecoming). Please give me any pointers to find my way out of this or better yet, some source code.
|
|
|
|
|
I get this error ever time I try to start the OpenGL Wizard. "Object with Program ID VsWizard.VsWizardEngine Cannot be Created. I have tested using a bunch of different Wizards and they are worked fine. I triple checked the Absolute Path and it is correct. I have Visual Studio .net Professional and I am using the .net version of the OpenGL AppWizard. Any ideas?
Thanks for any help anyone can provide.
TheTroll
|
|
|
|
|
|
How to run 2 different(or same) OpenGL objects in one DialogBox?
IDC_STATIC1 is a first OpenGL objects Scene window.
IDC_STATIC2 is a second OpenGL objects Scene window.
IDC_STATIC1 and IDC_STATIC2 ,they are placed on IDD_DIALOG1.
code:
pclStatic = (CStatic *)GetDlgItem(IDC_OpenGL_Window);
pclGlView = new CGlView(pclStatic);
pclGlView->OnCreate();
pclGlView->InitGL();
pclGlView->DrawGLScene();
pclStatic1 = (CStatic *)GetDlgItem(IDC_OpenGL_Window);
pclGlView1 = new CGlView(pclStatic1);
pclGlView1->OnCreate();
pclGlView1->InitGL();
pclGlView1->DrawGLScene();
Will not involve both windows (IDC_STATIC2,IDC_STATIC1)
|
|
|
|
|
I think we can did all this in a DLL,or a LIB!
class Cttt3d : public CSCWin
{
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
Cttt3d win;
win.Create("faint",200,200,16,false,100,100,false);
win.StartRender();
return 0;
}
|
|
|
|
|
good morning:
There is some diffcult for me, a new programer,to use vc++6.0.I don't know how to add my own class which is based on object class into project.I'm waiting you response with great thanks.
My E-mail:wuling129@sohu.com
Thank you!
|
|
|
|
|
as opposed to the window asking for options:
Running MSVC++.NET 2002
I look in:
C:\Program Files\Microsoft Visual Studio .NET\Vc7\VCWizards\OGLWiz7\HTML\1033\default.htm
and the HTML code is there:
I checked the OGLWiz7.vsz file in the directory
C:\Program Files\Microsoft Visual Studio .NET\Vc7\vcprojects
Here are the contents:
VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine
Param="WIZARD_NAME = OpenGL Application"
Param="ABSOLUTE_PATH = C:\Program Files\Microsoft Visual Studio.NET\Vc7\VCWizards\OGLWiz7"
Param="FALLBACK_LCID = 1033"
Any ideas???
|
|
|
|
|
I have the exact same problem!
|
|
|
|
|
So did I. The author tackles the same problem in the thread named, appropriately enough "Problem..."
The end result of the thread is that in the OGLWiz7.vsz file, the ABSOLUTE_PATH is set to "C:\Program Files\Microsoft Visual Studio.NET\Vc7\VCWizards\OGLWiz". But your installation of MSVS .NET probably named the folders as "...\Microsoft Visual Studio .NET\...". Notice how the second one has a space between "Studio" and ".NET" and the first one does not? (It took me 20min and reading through all the other messages to notice! ) Double check that your file has the space between the words.
This should resolve the problem b/c I had the exact same problem and I'm using the 2003 upgrade version and Win2K but it worked for me.
|
|
|
|
|
Wizard=VsWizard.VsWizardEngine
--->
Wizard=VsWizard.VsWizardEngine.7.1
|
|
|
|
|
In the file OGLWiz7.vsz change the first two lines from:
VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine
to:
VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine.7.1
or else won't work.
keep up the good work
Markthecoder
|
|
|
|
|
Thanks, I was wondering what was going on...
|
|
|
|
|
In the file OGLWiz7.vsz change the first two lines from:
VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine
to:
VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine.8.0
and that's it
Digitally yours,
CeMan
|
|
|
|
|
I think you have to do the same changes in Microsoft Visual Studio .NET 2005
Markthecoder
|
|
|
|
|
I'm using the .NET version on Windows XP pro with SP1. I followed the instructions in the readme file, and the wizard icon now appears when i start a new project. But once i press "Ok" Visual Studio .NET crashes and restarts . Error details displayed: An unhandled exception has been caught by the VSW exception filter. Any ideas? Thanks.
|
|
|
|
|
Hey, I have the exact same problem as you do:
If one happened to type the wrong absolute path, then it will show a blank window and then say that the HTML was not found. However, if the correct path IS supplied, then nothing happens for a while and then it crashes. Are we supposed to open the .sln and compile it one time or what?
Thanks,
Riz
|
|
|
|
|
First of all, it is a very handy tool, I guess it will help me a lot, so thanks a lot.. I just checked the code a little bit and have some comments;
1. I would like to have the function comments in doxygen (or JavaDoc) style. if possible..
2. When I don't select sample cube in the application, I still have the function GLCube. But it doesn't get called of course. I can delete it, but maybe, you can just get rid of it when I don't select it..
3. I am not sure about the performance of timer to show fps. People (including me) use;
__int64 end_count, start_count, dClockFrequency;
QueryPerformanceCounter( (LARGE_INTEGER*)&start_count);
QueryPerformanceFrequency( (LARGE_INTEGER*)&dClockFrequency );
/* rendering code here */
// FPS calculations again
QueryPerformanceCounter((LARGE_INTEGER*)&end_count);
elapsed_time = (float)(end_count - start_count);
float fps = ((float)dClockFrequency / elapsed_time);
As far as I remember, timer may not be reliable. I am not really sure though.
4. In CApp::FireDrawScene(), do we have to call wglMakeCurrent each frame? I could not experiment with it enough but, looks like it should have a huge performance hit.
Thanks again for the great stuff.
|
|
|
|
|
Hellow,
I Follow the instructions in the “Readme” file for VS.NET, but when I want to create a new project with your wizard,
after the first step my VS .Net crashes???
do i need to import any library's?
|
|
|
|
|
Crashes?! In what way? Any error messages?
--------------
"Aagh!! I'm a victim of a Random Act of Management!"
|
|
|
|
|
Thanx for helping me!!
The following happens:
- In the Visual c++ projects folder I choose a new OGLWiz (and give it a name)
- when I click on "OK" nothing happens
- after a while (few seconds) I get following bug report:
<<microsoft development="" environment="" has="" encountered="" a="" problem="" and="" needs="" to="" close.="" we="" are="" sorry="" for="" the="" inconvenience.="">>
- The data of this report contains:
* Error details: An unhandled exception has been caught by the VSW exception filter.
* Error signature: AppName: devenv.exe AppVer: 7.0.9466.0 ModName: unknown ModVer: 0.0.0.0 Offset: 039a6d28
Does this satisfies or do you need the technical information about the error report.
Maybe it's a stupid fault, but I'm new to C++, VS .net and opengl??
greetz Super Jack
|
|
|
|
|
I have the same problem. I've followed the installation instructions in readme.txt. Does anybody have a clue what might be wrong?
|
|
|
|
|