Ich versuche, die avTouch-Beispielcode-App auf dem Retina-Display laufen zu lassen. Hat jemand das getan?openGL ES Retina-Unterstützung
In der CALevelMeter Klasse, ich habe folgendes versucht:
- (id)initWithCoder:(NSCoder *)coder {
if (self = [super initWithCoder:coder]) {
CGFloat f = self.contentScaleFactor;
if ([self respondsToSelector:@selector(contentScaleFactor)])
{
self.contentScaleFactor = [[UIScreen mainScreen] scale];
}
f = self.contentScaleFactor;
_showsPeaks = YES;
_channelNumbers = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];
_vertical = NO;
_useGL = YES;
_meterTable = new MeterTable(kMinDBvalue);
[self layoutSubLevelMeters];
[self registerForBackgroundNotifications];
}
return self;
}
und es setzt den contentScaleFactor auf "2". Großartig, das wurde erwartet. Aber dann ist der CALevelMeter-Rahmen in den Layoutsubviews immer noch die Hälfte dessen, was er sein sollte.
Irgendwelche Ideen?
Aber verdoppelt das Retina-Display nicht die Bildgröße, um die höhere Auflösung zu berücksichtigen? Selbst nachdem ich den Code, den ich erwähnt habe, hinzugefügt habe, bekomme ich nur einen Meter, der 1/2 der Höhe ist. Dies ist nur für den openGL-Meter der Fall. Der UIView-Meter funktioniert gut mit der Netzhaut. Ich bin ratlos. – Bryan
@Bryan - Wenn Sie sich den AvTouch-Beispielcode ansehen, scheint Apple einen Fehler bei der Implementierung von '_drawView' in GLLevelMeter gemacht zu haben. Sie verwenden die Grenzen der Ansicht, die in Punkten ist, um Größen von Dingen in OpenGL zu bestimmen, wenn sie stattdessen die Instanzvariablen '_backingWidth' und' _backingHeight' verwenden sollen. Ersetzen Sie die Verweise auf die Größe und Höhe der Begrenzungen durch "_backingWidth" und "_backingHeight". Dies wird auf einem Retina-Display korrekt dargestellt. Ich werde einen Fehlerbericht über den Beispielcode einreichen. –
@Bryan - Ich habe den Code, der innerhalb der Bearbeitung geändert werden muss, auf meine Antwort lokalisiert. –