Thread: OpenGL, C++ Programmers wanted! Even one line of code can help!

  1. #1
    Registered User
    Join Date
    Mar 2004
    Posts
    5

    Post OpenGL, C++ Programmers wanted! Even one line of code can help!

    My name is Caleb, and I'm looking for some programmers willing to work with me on a 3D engine using OpenGL. Yes I know what I'm doing, no we are not starting from scratch. I've spent a few years organizing it and figuring it out, but I've realized I need some helping hands. Technology is moving too fast for one guy to keep up, the screen shots on my site are out dated tragically, but they show off a tiny bit of what it used to be able to do.. Sigh.. Alright what I want is for anyone who's interested in even contributing a little bit to send me something they've done, or are willing to do, and I'll get back to you asap! Kewl?

    - Caleb

  2. #2
    Software Developer jverkoey's Avatar
    Join Date
    Feb 2003
    Location
    New York
    Posts
    1,905
    are you seriously 13?

  3. #3
    Registered User
    Join Date
    Mar 2004
    Posts
    5
    13!?!?! Where did you get that!?!??! LMAO, NO! I'm not!

  4. #4
    Software Developer jverkoey's Avatar
    Join Date
    Feb 2003
    Location
    New York
    Posts
    1,905
    from your profile:
    Birthday May 28, 1990

  5. #5
    Registered User
    Join Date
    Mar 2004
    Posts
    5
    No I'm not really... lol.

  6. #6
    C++ Developer XSquared's Avatar
    Join Date
    Jun 2002
    Location
    Ontario, Canada
    Posts
    2,718
    Here's my line of code.

    Code:
    int main( )
    Naturally I didn't feel inspired enough to read all the links for you, since I already slaved away for long hours under a blistering sun pressing the search button after typing four whole words! - Quzah

    You. Fetch me my copy of the Wall Street Journal. You two, fight to the death - Stewie

  7. #7
    Registered User major_small's Avatar
    Join Date
    May 2003
    Posts
    2,787
    Code:
    glutInit(&argc, argv);
    there you go










    If I knew enough OpenGL to be useful, I might consider helping...
    Join is in our Unofficial Cprog IRC channel
    Server: irc.phoenixradio.org
    Channel: #Tech


    Team Cprog Folding@Home: Team #43476
    Download it Here
    Detailed Stats Here
    More Detailed Stats
    52 Members so far, are YOU a member?
    Current team score: 1223226 (ranked 374 of 45152)

    The CBoard team is doing better than 99.16% of the other teams
    Top 5 Members: Xterria(518175), pianorain(118517), Bennet(64957), JaWiB(55610), alphaoide(44374)

    Last Updated on: Wed, 30 Aug, 2006 @ 2:30 PM EDT

  8. #8
    Carnivore ('-'v) Hunter2's Avatar
    Join Date
    May 2002
    Posts
    2,879
    Very useful help

    Well, just to go along with the crowd, I'll add my contribution. TWO lines, not just one!!!
    Code:
    return exitVal;
    }
    Just Google It. √

    (\ /)
    ( . .)
    c(")(") This is bunny. Copy and paste bunny into your signature to help him gain world domination.

  9. #9
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    technically, what I am about to post is a valid line of code...if you don't believe me, you can either die, or try it yourself. Here we go:

    Code:
    ;
    EDIT:
    and just to show off, here's some of my ray tracing code for colliding particles against brushes in a binary space partitioned world!

    Code:
    
    #include "Defines.h"
    #include "Quake3BSP.h"								
    #include "LoadTexture.h"
    #include "Glext.h"
    //#include	"GLee.h"
    #include "Camera.h"
    #include "Frustum.h"
    #include "FPS.h"
    #include "trace.h"
    #include "GAMEEXPORT.H"
    #include "WorldObject.h"
    #include "Asteroid.h"
    #include <fstream>
    #include "WorldObject.h"
    
    extern	VWorldObject	*berttracker;
    extern	std::ofstream	trace;
    extern	GameExport	Export;
    #define	HITTOL	(.01)	//how close we have to come to an entity to run its touch function 
    #define	MINMAG	(3)     //minimum length to pass to brush collision program 
    /*
    	-11 22 03:	ALL NEW RAY TRACING STUFF
    	For right now Trace will be performed, and instead of returning a structure the calling routine
    	will have to access BSP.mBSPCOLINFO (speed issues)...I don't care how ugly it looks 
    */
    
    int	debug(0); 
    VWorldObject	*caller=NULL;
    
    void	BSP::TraceRay(VWorldObject*caller,Vector3	*Start, Velocity	*to, Vector3	*Mins, Vector3	*Maxs, int flags)
    {
    	if(to->Mag == 0)
    	{
    		MakeZeroTrace();
    		return;
    	}
    
    	InitBSPColInfo(Start, to, Mins, Maxs);	
    
    	//this was for enlarging before finding leaves touched (BAD)
    //	mBSPColInfo.BSPEnd = mBSPColInfo.BSPStart + (to->Dir*(to->Mag*2));
    
    	FindLeavesTouched(0);
    	
    	//Undo extensions that were made in leaf finding code
    	mBSPColInfo.mfCurrMaxs=*Maxs;
    	mBSPColInfo.mfCurrMins=*Mins;
    	mBSPColInfo.BSPEnd = mBSPColInfo.BSPStart + (to->Dir*to->Mag);
    	
    	//Enlarge for brush testing to MINMAG units
    	if(to->Mag < MINMAG)
    	{
    		mBSPColInfo.BSPEnd = mBSPColInfo.BSPStart + (to->Dir*MINMAG);
    	}
    
    	int	size = mBSPColInfo.TouchedLeafs.size();
    	int i(0);
    
    	if(flags	&	HITWORLD) //Test for collision against the world model brushes 
    	{
    		for( i = 0; i < size; i++)
    		{
    			BBoxCheckLeafForCollision(mBSPColInfo.TouchedLeafs.at(i));
    		}
    	}
    
    	if(flags	&	HITENTS) //Test for collisions against entities 
    	{
    		for( i = 0; i < size; i++)
    		{
    			tBSPLeaf	*temp = &mpLeafs[mBSPColInfo.TouchedLeafs.at(i)];
    			int	w = temp->entitylist.size();
    			for(int x = 0; x < w; x++)
    			{
    				BBoxCheckEntity(temp->entitylist.at(x));
    			}
    		}
    			size = mBSPColInfo.HitEntList.size();
    			if(size)
    			{	
    				EntCollisionInfo	*closest = &mBSPColInfo.HitEntList.at(0);
    				for(int i = 0; i < size; i++)
    				{
    					if(mBSPColInfo.HitEntList.at(i).fraction<closest->fraction)
    					{
    						closest = &mBSPColInfo.HitEntList.at(i);
    					}
    				}
    					mBSPColInfo.mpClosestEnt = closest->HitEnt;
    				
    			}
    	}
    	
    	if(mBSPColInfo.closestFraction == 1.0f)
    	{
    			mBSPColInfo.mIntersect = mBSPColInfo.BSPStart + (to->Dir * to->Mag);
    		return; //Wouldn't have hit anything anyway so don't worry about the other garbage 
    	}
    	else 
    	{
    		if(to->Mag < 1)	//Here, if the original move was small enough, we don't actually have to move it at all
    			mBSPColInfo.mIntersect = mBSPColInfo.BSPStart;
    		else
    		//Closest fraction here is smaller than what the real fraction would have been but you won't go through walls 
    		//And you won't 'fudge' into them
    		mBSPColInfo.mIntersect = mBSPColInfo.BSPStart + (to->Dir * to->Mag * mBSPColInfo.closestFraction);
    	}
    
    	/*
    		-This gets kind of tricky because neighbors don't run their touch functions (such as doors
    		that have been teamed together do not re-open when they hit each other)
    	*/
    	if(flags	&	RUNTOUCH)
    	{
    		if(!(flags&HITENTS) || !mBSPColInfo.mpClosestEnt)
    			return; //Never tested for collision against entities, or you hit the world first so fugazi !¿½¡
    		
    					if(caller)
    					{
    						if(caller->mpNeighbor)
    						{
    							if(caller->mpNeighbor!=mBSPColInfo.mpClosestEnt)
    							{
    								mBSPColInfo.mpClosestEnt->VWOTouchFunc();
    							}
    						}
    						else //Caller doesn't even have a neighbor
    						{
    							mBSPColInfo.mpClosestEnt->VWOTouchFunc();
    						}
    					}
    					else //Caller didn't specify itself so we call touchfunc 
    					{
    						mBSPColInfo.mpClosestEnt->VWOTouchFunc();
    					}
    					//Only call if we passed in caller and we're not neighbors
    	}
    }
    
    /*
    	-Tested: all aspects of this work perfectly all of the time (tested with randomly generated start and end points
    	and their hulls)
    */
    void	BSP::EncloseVolumeWithBox(Vector3*start, Vector3*end, Vector3*mins, Vector3*maxs, BSPBBox*bbox,int paranoia)
    {
    	//New bounding box data
    	Vector3 newmins(0,0,0);
    	Vector3	newmaxs(0,0,0);
    	Vector3	newpos(0,0,0);
    
    	Vector3	disp = *end-*start;
    	
    	if(disp.x > 0)
    	{
    		newmaxs.x = disp.x + maxs->x;
    		newmins.x = mins->x;
    	}
    	else
    	{
    		newmaxs.x = maxs->x;
    		newmins.x = mins->x + disp.x;
    	}
    
    	if(disp.y > 0)
    	{
    		newmaxs.y = disp.y + maxs->y;
    		newmins.y = mins->y;
    	}
    	else
    	{
    		newmaxs.y = maxs->y;
    		newmins.y = mins->y + disp.y;
    	}
    
    	if(disp.z > 0)
    	{
    		newmaxs.z = disp.z + maxs->z;
    		newmins.z = mins->z;
    	}
    	else
    	{
    		newmaxs.z = maxs->z;
    		newmins.z = mins->z + disp.z;
    	}
    
    	newmaxs += *start;
    	newmins += *start;
    
    	bbox->pos = (newmaxs + newmins) * .5;
    	bbox->objmaxs = (newmaxs - bbox->pos)+paranoia;
    	bbox->objmins = (newmins - bbox->pos)-paranoia;
    }
    
    /*
    	-Don't modify the starting position because that seems to screw up the fractions and allows
    	you to go through walls. 
    	-When you get here, it assumes that the starting point and ending point aren't the same, so it
    	doesn't bother to determine when the length is zero (and results in an infinite loop if its length is zero)
    */
    void	BSP::ExtendMove(float	paranoia)
    {
    	Vector3	disp = mBSPColInfo.BSPEnd - mBSPColInfo.BSPStart;
    	float	basic_length = (disp.x * disp.x) + (disp.y * disp.y) + (disp.z * disp.z);
    	float	basic_wanted = paranoia * paranoia;
    	int	numtries(0);
    	while(basic_length <= basic_wanted)
    	{
    		numtries++;
    		disp = disp * 5; //Don't want this too big because when you use super long traces it 'fudges' into the walls
    		basic_length = (disp.x * disp.x) + (disp.y * disp.y) + (disp.z * disp.z);
    	}
    
    	//Now you know disp has a length of a bare minimum of PARANOIA units
    	
    	mBSPColInfo.BSPEnd = mBSPColInfo.BSPStart + (disp*-1);	
    }
     
    void	BSP::FindLeavesTouched(int	node)
    {
    	if(node < 0)
    	{
    		mBSPColInfo.TouchedLeafs.push_back(~node);
    		return;
    	}
    	
    	float	offset;
    	Vector3	veceff;
    	Vector3	*normal = &mpPlanes[mpNodes[node].plane].vNormal;
    	
    	if(normal->x < 0)
    		veceff.x = mBSPColInfo.mfCurrMaxs.x;
    	else
    		veceff.x = mBSPColInfo.mfCurrMins.x;
    	
    	if(normal->y < 0)
    		veceff.y = mBSPColInfo.mfCurrMaxs.y;
    	else
    		veceff.y = mBSPColInfo.mfCurrMins.y;
    
    	if(normal->z < 0)
    		veceff.z = mBSPColInfo.mfCurrMaxs.z;
    	else
    		veceff.z = mBSPColInfo.mfCurrMins.z;
    	
    	//FIXME: why doesn't this work with extents? That would be a lot more efficient
    	offset = fabs(DotProduct(&veceff, normal));
    	
    	float	startdist = DotProduct(normal, &mBSPColInfo.BSPStart) - mpPlanes[mpNodes[node].plane].d;
    	float	enddist   = DotProduct(normal, &mBSPColInfo.BSPEnd)   - mpPlanes[mpNodes[node].plane].d;
    	
    	if(startdist >= offset && enddist >= offset)
    	{
    		FindLeavesTouched(mpNodes[node].front);
    		return;
    	}
    	
    	if(startdist < -offset && enddist < -offset)
    	{
    		FindLeavesTouched(mpNodes[node].back);
    		return;
    	}
    	/*
    		-Spans the node so touch the front and back
    	*/
    	FindLeavesTouched(mpNodes[node].front);
    	FindLeavesTouched(mpNodes[node].back);
    }
    
    void	BSP::InitBSPColInfo(Vector3 *Start, Velocity *to, Vector3 *Mins, Vector3 *Maxs)
    {
    	mBSPColInfo.BSPStart = *Start;
    	mBSPColInfo.BSPEnd = *Start + (to->Dir * to->Mag);
    	mBSPColInfo.mfCurrMaxs = *Maxs+100.0f;
    	mBSPColInfo.mfCurrMins = *Mins-100.0f;
    	mBSPColInfo.mpClosestEnt = 0; 
    	if(-Mins->x > Maxs->x)
    		mBSPColInfo.mAbsMaxs.x = -Mins->x;
    	else
    		mBSPColInfo.mAbsMaxs.x = Maxs->x;
    
    	if(-Mins->y > Maxs->y)
    		mBSPColInfo.mAbsMaxs.y = -Mins->y;
    	else
    		mBSPColInfo.mAbsMaxs.y = Maxs->y;
    	
    	if(-Mins->z > Maxs->z)
    		mBSPColInfo.mAbsMaxs.z = -Mins->z;
    	else
    		mBSPColInfo.mAbsMaxs.z = Maxs->z;
    	
    	mBSPColInfo.HitEntList.clear(); //Clear hit entity list before using 
    	mBSPColInfo.closestFraction = 1.0f;
    	mBSPColInfo.hitNormal = Vector3(0,0,0);
    	mBSPColInfo.hitNormalDist = 0;
    	mBSPColInfo.TouchedLeafs.clear(); //Leafs we passed through
    }
    
    void	BSP::MakeZeroTrace()
    {
    	mBSPColInfo.closestFraction = 0.0f;
    	mBSPColInfo.hitNormal = Vector3(0,0,0);
    	mBSPColInfo.hitNormalDist = 0;
    	mBSPColInfo.mpClosestEnt = 0;
    }
    
    Last edited by Silvercord; 03-02-2004 at 08:47 PM.

  10. #10
    Registered User major_small's Avatar
    Join Date
    May 2003
    Posts
    2,787
    nice line of code
    Join is in our Unofficial Cprog IRC channel
    Server: irc.phoenixradio.org
    Channel: #Tech


    Team Cprog Folding@Home: Team #43476
    Download it Here
    Detailed Stats Here
    More Detailed Stats
    52 Members so far, are YOU a member?
    Current team score: 1223226 (ranked 374 of 45152)

    The CBoard team is doing better than 99.16% of the other teams
    Top 5 Members: Xterria(518175), pianorain(118517), Bennet(64957), JaWiB(55610), alphaoide(44374)

    Last Updated on: Wed, 30 Aug, 2006 @ 2:30 PM EDT

  11. #11
    Registered User
    Join Date
    Mar 2004
    Posts
    5
    HAHAAH!!!! You guys are great! I don't think I've seen this much sarcasm before in my life! lol..

    URL TAKEN DOWN! w00t!

    There this a .rar of a few demos I whipped together to show off minor things it's capable of, there is a lot more.. Thing is I'm making an engine, not demos... So that's why they aren't the greatest thing in the world, lol..

    Please someone seriously consider.
    Last edited by BlueFireEXE; 03-03-2004 at 04:47 PM.

  12. #12
    Registered User
    Join Date
    Feb 2002
    Posts
    465
    are you offering payment?
    I came up with a cool phrase to put down here, but i forgot it...

  13. #13
    Carnivore ('-'v) Hunter2's Avatar
    Join Date
    May 2002
    Posts
    2,879
    Sorry, but I just had to follow the crowd. Peer pressure! But honestly, I doubt I can help; and even if I could, i probably wouldn't because I always get sidetracked and end up doing nothing (as Bubba can testify )

    And here, I'll quote major_small:
    "If I knew enough OpenGL to be useful, I might consider helping..."

    And ... too:
    "are you offering payment?"

    Hope you aren't taking this too seriously, 'cause in these waters humour is rare and often somewhat caustic; we jump on any chance to laugh at someone
    Just Google It. √

    (\ /)
    ( . .)
    c(")(") This is bunny. Copy and paste bunny into your signature to help him gain world domination.

  14. #14
    Registered User
    Join Date
    Feb 2002
    Posts
    465
    i was being serious :-\

    im kinda busy right now and dont really have time to work for free, but im also very poor so money is always welcome.
    I came up with a cool phrase to put down here, but i forgot it...

  15. #15
    The Defective GRAPE Lurker's Avatar
    Join Date
    Feb 2003
    Posts
    949
    Originally posted by BlueFireEXE
    13!?!?! Where did you get that!?!??! LMAO, NO! I'm not!
    = yes
    Do not make direct eye contact with me.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. help again with scrolling without wrapping
    By Dukefrukem in forum C Programming
    Replies: 8
    Last Post: 09-21-2007, 12:48 PM
  2. ASM beginner gets 24 compiler errors on hello world...
    By Desolation in forum Tech Board
    Replies: 12
    Last Post: 06-16-2007, 10:21 PM
  3. C++ game programmers wanted
    By Mark Smulders in forum Projects and Job Recruitment
    Replies: 1
    Last Post: 06-11-2007, 08:26 AM
  4. Hotmail Hacked In One Line of code
    By no-one in forum A Brief History of Cprogramming.com
    Replies: 10
    Last Post: 09-01-2001, 09:45 AM