• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

110 Neutral

About PaulCaben

  • Rank
  1. Thanks for the answer, Edit: so i am not sure why this did not work, but i found an example from the project "Explosions" made by 71squared, that has a file that deals with the texture import. It works fine, if anyone is looking for the same thing. Thanks for the answer
  2. Hi, I am confused about what i get from my texture : [attachment=9940:Capture d’écran 2012-07-09 à 19.30.45.png] I followed this great [url="http://iphonedevelopment.blogspot.fr/2009/05/opengl-es-from-ground-up-part-6_25.html"]tutorial[/url] about texturing, and i have tried to re-use the code with a png image (512x512). Here is the code i am using : [color=#000000][font=Arial,]I created a texture from a call in the init method, then i called showTexture in the "draw" method to draw the texture :[/font][/color] [CODE]-(void)showTexture{ static const GLfloat texCoords[] = { 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0 }; glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 0, texCoords); //glDisableClientState(GL_VERTEX_ARRAY); //glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } - (void) draw { //... glEnable(GL_TEXTURE_2D); glDisableClientState(GL_COLOR_ARRAY); glVertexPointer(2, GL_FLOAT, 0, _polyVertices); glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)_nPolyVertices); [self showTexture]; } -(void)initTexture{ glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_SRC_COLOR); GLuint texture[1]; glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); NSString *path = [[NSBundle mainBundle] pathForResource:@"brown" ofType:@"png"]; NSData *texData = [[NSData alloc] initWithContentsOfFile:path]; UIImage *image = [[UIImage alloc] initWithData:texData]; if (image == nil) NSLog(@"Do real error checking here"); GLuint width = CGImageGetWidth(image.CGImage); GLuint height = CGImageGetHeight(image.CGImage); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); void *imageData = malloc( height * width * 4 ); CGContextRef context = CGBitmapContextCreate( imageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big ); CGColorSpaceRelease( colorSpace ); CGContextClearRect( context, CGRectMake( 0, 0, width, height ) ); CGContextTranslateCTM( context, 0, height - height ); CGContextDrawImage( context, CGRectMake( 0, 0, width, height ), image.CGImage ); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData); CGContextRelease(context); free(imageData); [image release]; [texData release]; } - (id)init { if ((self = [super init])) { //... [self initTexture]; } return self; } [/CODE] Thanks for your help
  3. I would like to connect the points from the red path, to the y-axis in blue. I figured out that the problem with my triangles came from the first point (V0) : it is not located where it should be. In the console, it says its location is at 0,0, but in the emulator, it is not. Edit: ok i figured it out, a simple issue about where the variable was defined. Thanks anyway
  4. Thanks, ok so it works! I changed a bit the vertices, and added some glDisable... in the draw method. Could you explain me a little bit about these snapshots : With : [CODE] //glDisable(GL_TEXTURE_2D); //glDisableClientState(GL_COLOR_ARRAY); //glDisableClientState(GL_TEXTURE_COORD_ARRAY); glBindTexture(GL_TEXTURE_2D, _textureImage.texture.name); glColor4f(1, 1, 1, 1); glVertexPointer(2, GL_FLOAT, 0, _polyVertices); glTexCoordPointer(2, GL_FLOAT, 0, _polyTexCoords); glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)_nPolyVertices); [/CODE] [attachment=9766:Cnothing.png] Then with : [CODE] //glDisable(GL_TEXTURE_2D); glDisableClientState(GL_COLOR_ARRAY); //glDisableClientState(GL_TEXTURE_COORD_ARRAY); [/CODE] [attachment=9767:CdisableColor.png] And finally with : [CODE] //glDisable(GL_TEXTURE_2D); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); [/CODE] The final image : [attachment=9768:CdisableTexture.png] What are these COLOR_ARRAY and TEXTURE_COORD by default? And why the texture coord would create stripes on the image? Thanks!
  5. Thanks, I would like to create a special wall, with different points in the x-axis (the red points), all connected to the y-axis (the green points). Is that what you mean by triangulate the vertices? [attachment=9748:ques.png] I've tried to do this, but i have a problem (Edit) I have a EXC_BAD_ACCESS in the draw method, next to "bind texture", i thought it might be because of the textCoord array, that may be looking for empty coordinates, but the texture is a 512pixels/or points (i'm not sure) square... [CODE] - (void)generatePath { int _nVertices = 0; _hillKeyPoints[_nVertices] = CGPointMake(44, 0); //_nVertices = 1 _hillKeyPoints[++_nVertices] = CGPointMake(100, 75); //_nVertices = 2 _hillKeyPoints[++_nVertices] = CGPointMake(50, 150); //_nVertices = 3 _hillKeyPoints[++_nVertices] = CGPointMake(150, 225); //_nVertices = 4 } -(void)generatePolygons{ _nPolyVertices = 0; float x1 = 0; float y1 = 0; int keyPoints = 0; _fromKeyPointI = 0; _toKeyPointI = 4; for (int i=_fromKeyPointI; i<_toKeyPointI; i++){ //V0: at (0,0) _polyVertices[_nPolyVertices] = CGPointMake(x1, y1); _polyTexCoords[_nPolyVertices++] = CGPointMake(x1, y1); //V1: to the first "point" _polyVertices[_nPolyVertices] = CGPointMake(_hillKeyPoints[keyPoints].x, _hillKeyPoints[keyPoints].y); _polyTexCoords[_nPolyVertices++] = CGPointMake(_hillKeyPoints[keyPoints].x, _hillKeyPoints[keyPoints].y); //V2, same y as point n°2: _polyVertices[_nPolyVertices] = CGPointMake(0, _hillKeyPoints[keyPoints+1].y); _polyTexCoords[_nPolyVertices++] = CGPointMake(0, _hillKeyPoints[keyPoints+1].y); //V3 = V1 _polyVertices[_nPolyVertices] = _polyVertices[_nPolyVertices-2]; _polyTexCoords[_nPolyVertices++] = _polyVertices[_nPolyVertices-2]; //V4 = V2 _polyVertices[_nPolyVertices] = _polyVertices[_nPolyVertices-2]; _polyTexCoords[_nPolyVertices++] = _polyVertices[_nPolyVertices-2]; //V5 = same x,y as point n°2 keyPoints++; _polyVertices[_nPolyVertices] = CGPointMake(_hillKeyPoints[keyPoints].x, _hillKeyPoints[keyPoints].y); _polyTexCoords[_nPolyVertices++] = CGPointMake(_hillKeyPoints[keyPoints].x, _hillKeyPoints[keyPoints].y); y1 = _polyVertices[_nPolyVertices].y; //CCLOG(@"y1 : %f", y1); } for(int i = 1; i < kMaxPolyVertices; ++i) { //ccDrawLine(_polyVertices[i-1], _polyVertices[i]); CCLOG(@"_polyVertices[i-1].y : %f, _polyVertices[i].y : %f", _polyVertices[i-1].y, _polyVertices[i].y); } } - (id)init { if ((self = [super init])) { [self generatePath]; [self generatePolygons]; } return self; } - (void) draw { glBindTexture(GL_TEXTURE_2D, _textureImage.texture.name);//EXC_BAD_ACCESS glDisableClientState(GL_COLOR_ARRAY); glColor4f(1, 1, 1, 1); glVertexPointer(2, GL_FLOAT, 0, _polyVertices); glTexCoordPointer(2, GL_FLOAT, 0, _polyTexCoords); glDrawArrays(GL_TRIANGLES, 0, (GLsizei)_nPolyVertices); } [/CODE] If i comment the bind texture line and the textcoord line, it gives me something strange, that moves, for example : [attachment=9749:Capture d’écran 2012-07-02 à 13.07.44.png] [attachment=9750:Capture d’écran 2012-07-02 à 13.07.48.png] Would you know something about this? Thanks
  6. Hi, I'm just starting with OpenGL, I would like to fill an area with a plain color, but i always get "stripes" inside this area. Would someone know how to fill it with a simple plain color? I put some pictures attached to this post : At first : [attachment=9738:Capture d’écran 2012-07-02 à 02.18.16.png] After i click once (it calls genBackground again, the unwanted stripes appear : [attachment=9739:Capture d’écran 2012-07-02 à 02.18.25.png] Same thing after another click : [attachment=9740:Capture d’écran 2012-07-02 à 02.18.38.png] Here is the code : Terrain is the area where to draw the plain color : [CODE] #import "Terrain.h" #import "HelloWorldLayer.h" @implementation Terrain @synthesize textureImage = _textureImage; - (ccColor4F)randomBrightColor { while (true) { float requiredBrightness = 192; ccColor4B randomColor = ccc4(arc4random() % 255, arc4random() % 255, arc4random() % 255, 255); if (randomColor.r > requiredBrightness || randomColor.g > requiredBrightness || randomColor.b > requiredBrightness) { return ccc4FFromccc4B(randomColor); } } } - (void)generateVertices { _hillVertices[_nHillVertices] = CGPointMake(0, 0); _hillTexCoords[_nHillVertices++] = CGPointMake(0, 0); _hillVertices[_nHillVertices] = CGPointMake(100, 50); _hillTexCoords[_nHillVertices++] = CGPointMake(100, 50); _hillVertices[_nHillVertices] = CGPointMake(150, 200); _hillTexCoords[_nHillVertices++] = CGPointMake(150, 200); _hillVertices[_nHillVertices] = CGPointMake(100, 300); _hillTexCoords[_nHillVertices++] = CGPointMake(100, 300); } - (id)init { if ((self = [super init])) { [self generateVertices]; } return self; } - (void) draw { glBindTexture(GL_TEXTURE_2D, _textureImage.texture.name); glDisableClientState(GL_COLOR_ARRAY); glColor4f(1, 1, 1, 1); glVertexPointer(2, GL_FLOAT, 0, _hillVertices); glTexCoordPointer(2, GL_FLOAT, 0, _hillTexCoords); glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)_nHillVertices); } [/CODE] and this is the "HelloWorldLayer", where i set the background and the textureImage color : [CODE] -(CCSprite *)spriteWithColor:(ccColor4F)bgColor textureSize:(float)textureSize { // 1: Create new CCRenderTexture CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:textureSize height:textureSize]; // 2: Call CCRenderTexture:begin [rt beginWithClear:bgColor.r g:bgColor.g b:bgColor.b a:bgColor.a]; // 3: Draw into the texture glDisable(GL_TEXTURE_2D); glDisableClientState(GL_TEXTURE_COORD_ARRAY); float gradientAlpha = 0.7; CGPoint vertices[4]; ccColor4F colors[4]; int nVertices = 0; vertices[nVertices] = CGPointMake(0, 0); colors[nVertices++] = (ccColor4F){0, 0, 0, 0 }; vertices[nVertices] = CGPointMake(textureSize, 0); colors[nVertices++] = (ccColor4F){0, 0, 0, 0}; vertices[nVertices] = CGPointMake(0, textureSize); colors[nVertices++] = (ccColor4F){0, 0, 0, gradientAlpha}; vertices[nVertices] = CGPointMake(textureSize, textureSize); colors[nVertices++] = (ccColor4F){0, 0, 0, gradientAlpha}; glVertexPointer(2, GL_FLOAT, 0, vertices); glColorPointer(4, GL_FLOAT, 0, colors); glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)nVertices); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); CCSprite *noise = [CCSprite spriteWithFile:@"Noise.png"]; [noise setBlendFunc:(ccBlendFunc){GL_DST_COLOR, GL_ZERO}]; noise.position = ccp(textureSize/2, textureSize/2); [noise visit]; // 4: Call CCRenderTexture:end [rt end]; // 5: Create a new Sprite from the texture return [CCSprite spriteWithTexture:rt.sprite.texture]; } - (void)genBackground { [_background removeFromParentAndCleanup:YES]; ccColor4F bgColor = [self randomBrightColor]; _background = [self spriteWithColor:bgColor textureSize:512]; CGSize winSize = [CCDirector sharedDirector].winSize; _background.position = ccp(winSize.width/2, winSize.height/2); ccTexParams tp = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; [_background.texture setTexParameters:&tp]; [self addChild:_background]; ccColor4F color3 = [self randomBrightColor]; CCSprite *textureImage = [self spriteWithColor:color3 textureSize:512]; //ccTexParams tp2 = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; //[stripes.texture setTexParameters:&tp2]; _terrain.textureImage = textureImage; } [/CODE] Thanks for your help