Mac OS • 59:43
This session offers a summary of the exceptional 2D and 3D graphics technologies in Mac OS X. The latest information on Quartz, OpenGL, ColorSync, printing, and Image Capture are presented. This overview provides an introduction to other graphics and imaging sessions.
Speaker: Peter Graffagnino
Unlisted on Apple Developer site
Transcript
This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.
Hi everybody. I think they were running a little bit late next door. Hopefully you guys made it over from the other session. So let's see if I can get this thing going. Okay, that's me. So here's the block diagram you've all seen probably many more times than you need to right now. But what we're going to be focusing on here is the graphics layer.
And what I'm going to be doing in this session is really bringing you through an overview of all the various technologies we have on OS X in the graphics layers for you to use in your applications from 2D, 3D, multimedia. Then I'm going to show you a few demos on the system here. And then, as Travis said, have a pretty extensive pointers to other sessions throughout the week that I highly recommend you go to if you're interested, particularly in graphics.
So again, the bubble bullets for the graphics layers, we have Quartz for 2D, OpenGL for 3D, and QuickTime for multimedia and video. Now, what we did when we came up with Mac OS X was want to take the best technologies in each of these areas and adopt them, and not necessarily reinvent the wheel or come up with new and different technologies.
So you can see what we've done as I go through the presentation is really look for best practices in the industry and employ those in OS X as building blocks for you guys to do your applications. So let's start with Quartz. Some of these slides you may have seen before in the keynote. If any of you work at big companies, you know how this works, but I did them first. So anyway, PostScript and PDF are really the industry standard 2D imaging model.
And if you think about it, it's pretty amazing. Basically, all the pages that you've probably seen in publications over the last 10, 20 years since the basic underpinnings of PostScript were figured out can be described in this language. And it's really evolved only very little over time to add things like device-independent color, other font formats, and things like that. So it's really a credit to the designers of this imaging model that it's withstood the test of time.
It's even gone through a language change. I mean, it started out as being bound to, you know, very much Java-like VM-oriented environment with the PostScript language interpreter into a file format like PDF, which is just declarative. And then as we have with Quartz, we'll be showing you just the 2DC library, which implements the same imaging model.
[Transcript missing]
The other thing for Quartz 2D is we have very fast anti-aliasing. One of the major motivations for building Quartz was the user interface and some of the ideas that we wanted to do with Aqua. And we knew it had to be very fast and very high quality.
And so Quartz, we spent a lot of time on the anti-aliasing algorithms and it's really subpixel accurate in terms of text positioning and fixed point subpixel coordinates and exact coverage per pixel. So it's pretty sophisticated what's going on there. Then we have Apple type technology that Apple actually already had so we didn't need to rebuild anything here.
Apple has a pretty extensive type machinery called the Apple Type System and it supports TrueType as well as Type 1 and other pluggable font formats. And that we just built right in to Quartz. And Quartz calls the Apple Type Solution whenever it has to do any character handling.
And in fact that piece of code can stream out data when we need to embed a font. We just tell them, "Hey, we used these three glyphs from this font." And the type system will subset the glyphs and stream this out in a format that we can just stick right into the PDF file.
So it's a really good way to get a lot of value out of these technologies that we had at Apple that were really good at doing that. That had been around before we even did Quartz. On the Type 1 Scaler I mentioned, we do have Type 1 built in. In fact we worked with Adobe on getting the Type 1 Scaler. So in terms of ATM, you don't really need ATM as a rasterizer.
I mean there's font management things in ATM as a product. But in terms of the original reason why ATM existed, which is to bring Type 1 support to the Mac, we've cleaned that up with OS X and it's now just built in as a standard format. No extra software required.
ColorSync is another technology we had at Apple and used primarily in high-end workflows. And it's a great API for wiring together transformations on colors and sending image data through it. And so we just use that directly in Quartz 2D without necessarily writing any code. If we're asked to draw an LAB image rotated 45 degrees, we'll set up the color worlds behind your back and match appropriately through the color worlds to the screen or however you've set up the destination profile for your rendering context.
There's going to be a lot of talk about how this exactly works, the matching between the ColorSync implementation in Quartz 2D and the PDF model versus the straight ICC model, which is in ColorSync. And in the ColorSync talk they're going to explicitly talk about ColorSync and Quartz working together. So if you're interested in that topic, that's a good thing. session.
The other thing we did, as you've no doubt heard, is we've bundled a bunch of fonts, about 50 megabytes worth of fonts. They're both decorative and classic designs as far as Roman typefaces go. And for Japanese, we've got six really high quality Japanese fonts. These fonts range, again, from kind of more classic designs to more modern designs. But additionally, they come with a huge amount of glyphs.
I think it's something like 12,000 glyphs in each of these fonts. So it's a really complete font. And what's more, there's no resolution limit or embedding limit in terms of what you can do with these fonts on OS X. And that's something that's, I think, sort of been holding back desktop publishing a little bit in the Japanese market because it's very expensive to have high quality fonts and the outlines are very pretentious. And I think that's something that's been protected. And if any of you have dealt with, you know, laser writers with these kind of fonts, you know what I'm talking about. But these fonts are, there's no such limitation or no copy protection or anything like that.
And together with our streaming we get out of the Apple type software, what we're able to do is embed only the glyphs necessary from the fonts that are shown into the PDF file. So that PDF file can travel anywhere, any platform, and still have those great fonts embedded in it. So let me show off some of the fonts here.
So we have Baskerville, a bunch of sizes. You'll notice it's not just the regular italic bold kind of set. We've actually got some of the semi-bold and intermediate weights like that. So obviously much more expressive than QuickDraw style bits. We've got regular bold light and condensed, various flavors of American typewriter, which is a nice fixed advanced font. Some of the classic faces here: Kaslan, Dedo, Copperplate.
Some more decorative faces. We've got Markerfelt, which is kind of a nice kind of presentation font. Zapfino, which is a font designed by Herman Zapf, the font designer, in the spirit of his own calligraphy, his own handwriting. And that's really beautiful font, and I'll actually show that interactive during the demo.
Optima. Optima is a great font. It's been around for a while. One of the things that is great about Optima on OS X is the anti-aliasing really brings through some of the subtle characteristics of this font. For example, the B in bold has a very slight bow on the curve.
And to really represent that faithfully requires pretty sophisticated anti-aliasing and more than 16 levels of gray, as some approaches do. It really benefits from the real sophisticated anti-aliasing approach we take. And a normal hinting renderer would flatten that thing away the first time it's sawed. So it's great to be able to preserve some of the subtle details of the typefaces.
And then here are the Japanese fonts. As I said, I hope I'm not offending anyone with this. I don't speak Japanese, but I'm told it says this is a beautiful font. I trust them on that. But you can see we have some of the modern faces and the more classic serif faces, too, at the bottom.
[Transcript missing]
So that's about it for Quartz. Let me briefly show you some slides on OpenGL. Some of these may look familiar. So OpenGL is industry standard 3D technology. It's been around for, I don't know, 15 years or so. It started life as the GL graphics library on SGI machines. I think early 90s became a standard.
It's been through about two or three revisions as OpenGL. And it's very much a vibrant standard. There's all kinds of extensions being proposed very frequently. It's got a very clean model of how to add functionality, how to probe for functionality, to be able to take advantage of specific card features. And it's a real nice programming model.
And a lot of our game developers have used it to develop some great games over time. It's a picture from Star Trek. And if you go down... On the show floor, you see the games all running on OS X. It's really pretty amazing. I don't know. Its calculation is probably off, but not by an order of magnitude.
But I figured there's got to be something about like 100 gigaflops on that table of Quake games that people are playing at. I don't know if anyone has a better number shouted out. But you figure you've got GeForce CPUs in there, and you've got NV11, NVIDIA's GeForce 2 cards in there.
I think it's... I think it's... It's a pretty stunning supercomputer display there. But OpenGL is really not just for games. Again, you may have seen the slide before. It's also for a lot of applications that kind of grew up around GL and UNIX and environments like that, which are prevalent in the high-end modeling, animation, scientific engineering world.
Maya is a great example of such an application. And we're really excited. And working very closely with the Maya guys to get their port for OS X working really well. But there's a whole stream of other developers who are kind of in this camp as well, and hopefully some of you out there, who come from this heritage of high-end workstation graphics with either custom vertical solutions or even broad solutions.
So we're really excited to be working with any of you developers out there. We have a great OpenGL team and great developer support. So get involved with Apple. If you or you know someone who's got a great solution to bring to the platform now that we have UNIX and OpenGL all working together.
The architecture on OS X for graphics acceleration, we have spent a lot of time making sure that the graphics acceleration architecture on X aggressively virtualizes the resources of the graphics cards. So if you're playing a full screen game, for example, essentially every byte of video memory can be owned by that game. When you're running in a windowed environment, the video memory is obviously shared and arbitrated among the applications, but none of them have to explicitly get in the game of managing their memory.
So really it's almost sort of a VM system that works in the video memory. Of course, there aren't page tables, so the analogy is not completely accurate, but it really, we did take our role as an OS vendor very seriously when we looked at how to support 3D graphics acceleration and it's really a nice architecture. So we're really happy to have great drivers for both NVIDIA and ATI cards out there and work with you on any additional cards if you're at one of the other graphics houses.
QuickTime. Just a few slides on QuickTime. Mac OS X comes with QuickTime 5. There's a few new features in QuickTime that are important. Actually, first, let me back up and just mention on this slide my comment about QuickTime's longevity. So, QuickTime has also been around for a long time, you know, early 90s or so. And the amazing thing about QuickTime is that it has really survived the test of time.
I mean, the original architecture, if you think back to early 90s, based on the component manager and pluggable codecs and dynamic codec chain building, all that stuff was really pretty groundbreaking and I think has paid off over the history of QuickTime because the basic architecture is still the same. The object orientation, even though that was, you know, pretty basic, but it's still the same. You know, pre, you know, pre, you know, heavy duty use of C++ and object oriented and the component manager was what they made it go with.
But it's really pretty amazing that there's been such innovation in video codec technology, video streaming technology, and the basic architecture is still sound. And so, you know, I think it's a great thing to point out about QuickTime and I don't always get an opportunity to talk about QuickTime, so I thought I would give that plug and thanks to the team for... for caring for that architecture over the years.
So the stuff that's in QuickTime 5 that's built in that's new, there's a new user interface, there's a Flash 4 codec, a Cubic VR, which is actually pretty exciting because the Cubic VR not only lets you look up and down, but it uses the six faces of the cube and it's very amenable to hardware acceleration. And so you can, a lot of the cards now are starting to implement Cubic environment mapping.
So I think there are some very interesting opportunities with Cubic VR and OpenGL working together. DLS Music Synthesizer, you saw the demo of that earlier, MPEG-1 streaming, the new DV codec, which is much higher performance and higher fidelity in terms of getting DV to the screen, very important for applications like iMovie and editing apps that you might be working on.
It also leverages the sound architecture on OS X, which... takes advantage of some of the real low latency we're able to get inside the kernel in OS X, and additional tricks to really get the sound performance pretty amazingly low latency and high throughput on OS X. I think games will take a lot of advantage of that as well.
[Transcript missing]
So what we call this piece of technology is the Quartz compositor. It's really the windowing system. Last year I think we called it the lightweight windowing system. But it's a client-server architecture. It's responsible for presenting, for all the final presentation blitz that happen in the system in order to mix the content onto the display. And it works with the acceleration layers of OpenGL, QuickTime, and everything working together to share the screen.
Some of the features of the Quartz compositor: Full double buffering. Double buffering is important not only from the standpoint of not needing to wake up an app to redraw the display, but also to have access to the rendered content of any window on the system at any time. So we can fade it in, fade it out, put a drop shadow over it, whatever.
Per pixel alpha channel: important to have per pixel control of the opacity of a window. So that, for example, in the menus the text is actually opaque, but the rest of the menu is transparent. And obviously Quartz 2D plays a role in that too, because you need a rendering system that can understand how to draw destination alpha into the back buffer for the window. When you draw with Quick Draw, you can only get opaque pixels.
So, for another feature that we have is an overall per-window fade control, so that's one big opacity knob on the whole window, so that's used for fading in, fading out. We have some per-window transform and warp capabilities, sheets, genie, dock animation, those kind of things. And the important thing is that this really integrates across whether you're doing 2D, 3D, video. Certain things are currently assumed opaque, like an accelerated 3D surface. Someday we'll get those transparent too.
But by and large, the model holds together. If the user picks up something that's transparent and drags it across the screen, the illusion is not broken. He can just slide it over every piece of content on the display. So I think with that, I'm going to switch over to the demo machine here.
Can I get them on one, please? Yeah. Great. So let me just bring up a very basic OpenGL application here to get some pixels moving. This is SkyFly, which if you've played with the developer CD at all, this is on your CD as a small application in OpenGL.
It's a simple terrain model with a flying airplane. I changed the code a little bit to run in a window. It runs full screen as it comes out of the box, but it's pretty straightforward. So you can see the window look of Aqua is very clean. We've got drop shadows. The window content goes all the way to the edge of the windows. That was really important to the look they were after with Aqua.
And so to set off the windows, all we really have is the drop shadow. And so you can see what's happening is the drop shadow is actually dynamically compositing. I mean, it's not a very in-your-face effect, but it carries the illusion of the window. It carries the illusion that even with animated accelerated content underneath, we can still set off that finder window without having to just chop the pixels with a hard handoff between the accelerated content and the finder window.
Again, down in the dock, you can see if I drag... The OpenGL window down underneath the dock. You can see the compositor kicking in to do all the blending on the dock. You can see that all the icons have a high degree of anti-aliasing, very high production value, if you will, graphics. So to really carry that anti-aliasing above arbitrary content, it's essential to have some kind of compositing going on in the windowing system. Otherwise, you're just going to hard clip it, and it's not going to look right.
So my opinion is as soon as you go to anti-aliased icons that are going to be piece parts of the user experience, you've got to do a composited windowing system or it's just not going to hold together. Let me show you a little more in detail with that with this Pixie application, which is on the developer CD. And I just have to configure it here to refresh continuously.
This is a nice little tool. You can use it for, you know, sniffing at your pixels and seeing what's going on. But if I hold it down here, You can see what's going on in the display is actually, you know, there's a lot of, you know, like half-colored pixels in order to get the side of the Microsoft icon there working well. And that's all getting composited on the fly as the OpenGL application is playing. And, you know, obviously it's a lot of work for us to do that and design a system such that that could be possible. But it's really important, you know, to not break the illusion.
If you're going to present the user with really nice anti-aliased icons, you really don't want them falling apart when they go over 3D content. So, again, just another minor example, if I go up there to the corner of the window, you can see the corners of the window have little anti-aliasing to make them look real crisp. And you can see how the accelerated content is blitting through there as well.
[Transcript missing]
I'm ad-libbing a little bit on my demos because some of those were shown earlier too. So here's a piece of PDF clip art. This is actually just an EPS file that we distilled. And I just drag it into a text editor here. And I can add a text label to that, make the font a little bigger.
So again, for the purposes of drag and drop, what we do is we do live dragging of text, which includes graphics. So if a user wants to move this to another application, he's going to move it over that 3D content, and you really want everything to just continue to work. And you can see how the app is still animating under there. We lose a little bit of frame rate, but the illusion holds together.
And the user just thinks he's dragging this text clipping over a piece of acetate over the whole screen. And so it's important, and it's kind of a theme, I guess, from working at Apple, is that you just want things to appear as they should. And it doesn't matter technically how difficult they might be, but you really want to sort of delight the user with the interactivity and the production values of the system.
So, that's enough of a compositor. Let me show you, actually while I have OpenGL going here, this one does have a little bit of audio. This is kind of a teaser for a session that will be coming up, I think it might be tomorrow or Wednesday, but we'll see in a second, that shows how to combine some of these technologies together.
So, for example, this is actually using OpenGL and QuickTime together to put a movie on a surface, and I think Jeff's getting some outrageous frame rate, like 350 frames a second, but there's probably not that many frames of video, but it's one of the Apple ads that he's got there.
And you can see, not only are each of these building blocks that we have pretty compelling, but you start to put them together, and I think there's really... Peter Graffagnino Some pretty interesting opportunities here. I'd like to start off with Liz, Polyester Bride. Liz Higgins Sure, for you. Peter Graffagnino So, I'll give you a pointer to that one, when I talk about sessions later.
Let me bring up Internet Explorer here and hit on a few things about the printing pathway. So I'm basically going to do the first half of that demo where I showed you the printing pathway recording to PDF. So Internet Explorer is a Carbon application drawing its content with QuickDraw. Here's news.com. Let's see what's going on today.
Bring up the print panel. Now this is a system-wide print panel, so that's another advantage from OS X, another difference from OS 9, where the print UI, you didn't know what you were going to get. You made the call to put up the print dialog, and it was kind of up to the driver from there.
We have standard print dialogs that we bring up. The drivers plug into them and can add capabilities, but it's no longer kind of a guessing game in terms of what applications are going to do with the print record. We have got a nice property list where we store all the information about the job. So hopefully that will make your lives easier, particularly when QAing against a whole bunch of different print drivers.
But I can hit preview here and that's going to basically run the first half of the printing process and bring up in the preview application here a PDF rendering of the page. And it's basically the content that the application drew through QuickDraw calling Quartz 2D and then saved out as a PDF file.
And if I were to actually print this, then this exact PDF file would go through the back end and get converted to PostScript or Raster Bits or whatever. And just to show you, it's real PDF, so let me try dragging it onto Acrobat here. And there's Acrobat showing the same file. So anything we create can obviously be read by Acrobat because it's just PDF.
A little bit more on the 2D. Here's a text edit document that has a bunch of different fonts in it. These are the fonts that we ship. These are all interactive. Just scroll through some of these so you can look at them. There's Zepp Fino, Gil Sands, I don't think I had that on the slide, Helvetica Noy, a bunch of faces of Helvetica. If you can't find one in there you need, I don't know. Optima, let me show you.
Let me show you what I was talking about with that B if I go on, crank on the slider here. Just to scale up that B, you can see how those subtle curves are in there in the font design, and because of the anti-aliasing, we can carry those features down to very low point size.
[Transcript missing]
I could type in something even bigger. But, you know, no resolution limit, you know, pretty dynamic interactive scaling. So hopefully this will be a great thing for not only Japanese users but everyone. And, you know, as was mentioned in the other sessions, these fonts exist on every system, every user system.
So, you know, it might be likely if you're writing, say, for example, a mail application and someone gets a message in Japanese, they may actually be showing Japanese content in your application. So I think you also need to be aware of those possibilities that someone may be buying your app not in that particular market but may be dealing with language content.
From other places and whether that means linguistically, obviously you may not have all the dictionaries and stuff necessary to edit in that content but at least to display and manipulate letter forms and things like that. I think that's a good opportunity too for, that help us share content worldwide.
[Transcript missing]
So anyway, the usual thing to do, of course, there's automatic tasks you can set up to download images. You can have them run in AppleScript, which you saw the demo of. You can also have, the user can configure it to run any application which can handle a multiple open of images.
So, for example, even if you're a word processor, for example, if you can accept an Apple event to open a collection of images, then the user could set up Image Capture to call your application and maybe you make a new document with those images laid out or something like that.
So another thing to keep in mind, very simple way that you can take advantage of Image Capture in your code. Now, there's going to be a whole session on Image Capture where they'll go into the API if you want to take a picture, for example, or do camera-specific. But there's a lot of opportunity here. So let me go ahead and download my Hawaii pictures here.
And by default, everything goes into the pictures directory of the user, but if you noticed on the Image Capture panel, there was a place where I could set a different folder, for example. So those are my small selection of my Hawaii pictures. I only golfed one day, but I spent a lot of it in the sand trap. And then, of course, all of our favorite application, which is the slideshow, which I'm going to talk about a little bit while these images show up. So what's going on here? There's my lovely wife, Nancy. Hi, Nancy.
When we started looking at what was going on with graphics cards and what you could do with OpenGL, This is actually, looks perhaps a lot easier than it is. I mean, what's going on here is there's about 6 megabytes worth of textures that are getting crossfaded. There's a front buffer and a back buffer. And probably about 12 to 16 megabytes worth of video memory to do this well. We use less memory and downsampled textures if we're on a lower config.
Probably about 2 gigabytes per second of video memory bandwidth are necessary to draw this much textures with all this blending going on. So, and of course there's all other sorts of complications. If you program with OpenGL, there's a power of two texture limit, so the textures have to be diced or rescaled. So there's a lot of, you know, kind of trickiness to kind of getting this going. But the end result is, you know, something people would expect. I mean, you know, my parents would love to see these pictures of, you know, us on our Hawaii vacation.
And this would be a great way to show it to them. So again, this is an example of, you know, kind of OpenGL not being just for games. Obviously it's great for games, but the innovation that's being driven so hard there in terms of performance lets you do some of these things in real time. I mean, this is not at all a scripted slideshow at all. It's just reading the raw JPEGs. It's picking a random place to zoom in. It alternates between zoom in and zoom out. And it's all very dynamic.
In fact, it's great. I run my PowerBook. You can actually boot a PowerBook with the lid closed. I don't know if you know about this. If you have an external keyboard, you can boot it up. And that way all the video memory on the PowerBook will be used on the TV jack. And you can run the screensaver on your TV and put on some music and entertain friends for days and days.
So... Pretty cool. But I wanted to give you some insight into the technology that's actually behind that. And I think we're at a point now in the evolution of graphic systems where there is a lot of technology that's untapped that we can try to tie together some of these things that are traditionally offline batch processes and do them in real time for the user. So that's... Let me go back to the slides.
Okay, so I've gone through all of the technology here that we've put for you in Mac OS X from the API levels with 2D, 3D, QuickTime for video, tying it all together with the compositor, and kind of putting back up kind of the textbooks there. Because an important point for us is we really are trying to adopt best practices in the industry and look at what has worked before and deploy that in an integrated fashion for all of you to develop your applications on.
So that's really the extent of my slides. What I've got for you next is a bunch of pictures of the roadmap CD. Hopefully the colors are the same. I took them from the web. And I'm going to kind of give you my picks of sessions to go to throughout the week. So if you want to follow along and circle, you can.
Tomorrow, first thing in Hall J, there's a session on PDF, Quartz, and Mac OS X. This is kind of an introductory session. If you're not really familiar with PDF and how is PDF different than Acrobat and how we use it in OS X as a graphics file format versus how tools like Acrobat add much more data to it to become more of a document format, you should go to that session.
Then after that, in Hall A1, which is this room, there's going to be a session called 2D Graphics Using Quartz, which is going to be down with the Quartz API, looking at actual sample code and how the Quartz 2D system is put together in particular and what the function calls look like.
Tomorrow afternoon, right after lunch, there's going to be a graphics for games session, which is going to talk about primarily how to use OpenGL for games. OpenGL, we think, is a great solution for not just 3D games, but 2D sprite engines as well. In fact, I'd be really interested in hearing if anyone has a sprite engine project they're working on, because I think it would be really a great way to bring that class of apps to another level of performance.
After that, there's a session on drawing Unicode text with Atsui. So if you're a Carbon developer and you want to really get into the layout and the Unicode to glyph processing that happens in the system, that's the session you want to be at. You can also learn how to draw from Carbon apps using Atsui to Quartz graphics context as well.
So if you're looking to get features from Quartz and be a Carbon app, that's one approach is to go to that session there and learn what they are offering. Let's see, on Wednesday in the morning, there's the QuickTime overview. Just get the State of the Union on QuickTime.
Later in the morning, there's the QuickTime overview. Later in the morning, there's the Image Capture framework. You'll hear about the tools they have for if you want to write an application to acquire images or if you're a device vendor and you want to play with the game, how to get involved with Apple on that.
That's a good session to go to. The ColorSync session at 2 o'clock after lunch on Wednesday is going to be a combination of just ColorSync for those of you who are using it. Those of you that are familiar with ColorSync and also ColorSync and Quartz working together and how that whole integration works in OS X. So that's a really interesting session if you're interested in color and some of the integration work that's been going on in OS X.
Then in the big hall, 3:30, Wednesday, is text on Mac OS X. This talks at a slightly higher level about all of the text facilities on OS X, who's internally using it in terms of layers of the stack and how Appearance Manager gets done, what it needs to get done.
A little bit on the high-level object I mentioned earlier, the MLTE, just kind of the whole infrastructure top to bottom for text on OS X. In the red there, we've got the OpenGL sessions. The first session is one called OpenGL High Performance 2D, and that talks about some things like the QuickTime movie view or the slideshow application. Jeff Stahl has some examples of how to actually dice up big images to put them on texture maps and move them around and rotate them.
So if you're interested in doing some 2D graphics where you've got a lot of pixels, you want a lot of interactivity, and you want to use OpenGL for that, that's a really interesting talk. Later that afternoon, there's OpenGL Geometry and Modeling, which is, again, more the traditional 3D uses of OpenGL, an interesting session. A bunch of QuickTime tracks going on as well in parallel Wednesday afternoon.
Thursday, first thing, we've got OpenGL Optimization, which is going to be really kind of an expert session. If you're familiar with OpenGL and you really want to tune the last little bit out of your app, go to this session and learn about all the little tricks and techniques and how to package your vertex data so it's optimally passed through the system and things like that. And OpenGL Advanced Rendering, also some advanced techniques for OpenGL experts. on Thursday morning.
Font management on OS X. So rather than text processing, this talks about fonts and how they live in the system, what directories they live in, how you can enumerate all the fonts, all the font management APIs we have on OS X. So that's a good session to go to. We've got a printing session at 3:30, which is a great session to go to to learn about all the printing APIs from the Carbon standpoint, as well as some of the objects from the Cocoa standpoint. It talks about the whole architecture in a fair amount of detail.
There's also a parallel with that session over in the Civic Center on Java graphics, which is pretty interesting if you want to hear how the Java guys are doing Java 2D using a combination of Quartz and some OpenGL. Actually, very interesting session there as well if you're interested in Java.
Feedback forums start on Thursday afternoon. We've got the OpenGL feedback forum. I encourage you, after you've gone to the sessions, to bring any feedback to that. On Friday, we have a session 9 a.m. in Hall A2 called Graphics & Imaging Tips & Techniques, or Tips & Tricks. This is not the session you go to learn how to put the dock on the left-hand side of your screen.
These are actual programming tricks of how to... There's some debugging, optimization, demonstration. There's also some discussion of how the printing graph port works on OS X. A bunch of topics that none of which were big enough for a whole session, but we kind of put them together into a kind of bag of tricks here that we thought people should know about while we had all of you here for the conference. Amen. Then there's the feedback forum on graphics at 2 p.m. in J1, so come there and give us feedback on what we should be doing, what we can do better.