geplaatst door: Macceraar
Weet iemand waarom het RAM-gebruik zo extreem toeneemt als ik grote (nou ja, grote...) smooth points render met OpenGL?
Extreem RAM-gebruik met grote smooth points in OpenGL
22 november 2004 - 23:50    reactie #1
geplaatst door: Reflex
Kijk :) hier kunnen we natuurlijk niets mee. als je geen inzicht geeft in je procedure...

Wat je kunt proberen is de profiling tools van apple gebruiken, en kijken welke variabelen groeien.

probeer ook het command line programmatje 'leaks' waarmee je kunt kijken of er (duh) geheugenlekken in je app zitten

PS. ik heb geen ervaring met OpenGL, maar dit zijn gewoon algemene technieken

(Bewerkt door Reflex om 0:16, 23-11-2004)

God has a hard on for Marines, because we kill everything we see. He plays His games, we play ours. To show our appreciation for so much power, we keep heaven packed with fresh souls. God was here before the Marine Corps, so you can give your heart to Jesus, but your ass belongs to the corps.
Extreem RAM-gebruik met grote smooth points in OpenGL
23 november 2004 - 01:30    reactie #2
geplaatst door: Macceraar
Dit stamt van Apple's CocoaGL af, al zie je het alleen maar een beetje in de source. De NSWindow is niet meer textured en maar 128*128. Er zijn een aantal dingen die beter kunnen, maar dit was sneller om te maken, en 't is maar een testje dat ik speciaal hiervoor kleiner heb gemaakt.
#import <Cocoa/Cocoa.h>

@interface MyOpenGLView : NSOpenGLView
{
BOOL inited;
}
- (void)reshape:(NSRect)frame;
@end

#include <OpenGL/gl.h>

#import "MyOpenGLView.h"

@implementation MyOpenGLView

- (id)initWithFrame:(NSRect)frame
{
GLuint attribs[] =
{
NSOpenGLPFANoRecovery,
NSOpenGLPFAWindow,
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAColorSize, 32,
0
}; // de rest maakt me nu niet uit
NSOpenGLPixelFormat *fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:(NSOpenGLPixelFormatAttribute*)attribs];
if(!fmt) NSLog(@"No pixel format");

return self = [super initWithFrame:frame pixelFormat:[fmt autorelease]];
}

- (void)awakeFromNib
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:[self window]];
[[self window] setContentView:self];
[[self window] setContentAspectRatio:NSMakeSize(1, 1)];
[[self window] setMinSize:NSMakeSize(0, 0)];
}

- (void)reshape:(NSRect)frame
{
glViewport(0, 0, frame.size.width, frame.size.height);
glPointSize(frame.size.width); // boven 84 ziet ie er bij mij niet meer goed uit
}

- (void)drawRect:(NSRect)rect
{
if(!inited) { // om het bij de andere gl*() te houden.
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_POINT_SMOOTH);
glColor3f(1, 1, 1);
[self reshape:rect];
inited = YES;
}
glClear(GL_COLOR_BUFFER_BIT);

glBegin(GL_POINTS);
glVertex2f(0, 0);
glEnd();

[[self openGLContext] flushBuffer];
}

- (void)windowDidResize:(NSNotification *)aNotification
{
[self reshape:[self bounds]];
}

@end

Compile en draai 'm. Trek 'm over je scherm als je problemen wilt.

@OpenGL Driver Monitor: dat ik daar zelf niet aan dacht! VRAM gaat veeeeeeeeeeeeeeeeeeel te ver (maar dan nog verder).