mirror of https://github.com/tLDP/LDP
updated
This commit is contained in:
parent
75226c157f
commit
a30a080ea8
File diff suppressed because it is too large
Load Diff
|
@ -18,14 +18,15 @@
|
|||
</affiliation>
|
||||
</author>
|
||||
|
||||
<revhistory>
|
||||
<!-- <revhistory>
|
||||
<revision>
|
||||
<revnumber>0.9.1</revnumber>
|
||||
<date>2002-01-03</date>
|
||||
<revremark>Converted to docbook</revremark>
|
||||
</revision>
|
||||
<revnumber>0.9.2</revnumber>
|
||||
<date>2002-01-09</date>
|
||||
</revision> -->
|
||||
<!-- previous versions get their own <revision> tag -->
|
||||
</revhistory>
|
||||
<!-- </revhistory> -->
|
||||
|
||||
<pubdate>v.0.9.2, 2002-01-09</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>2001</year>
|
||||
|
@ -113,7 +114,7 @@
|
|||
6.1. RTFM!
|
||||
6.2. Look For Updates
|
||||
6.3. Newsgroups
|
||||
6.4. Google
|
||||
6.4. Google Group Search
|
||||
6.5. Debugging: Call traces and core files
|
||||
6.6. Saved Games
|
||||
6.7. What to do when a file or library isn't being found
|
||||
|
@ -781,9 +782,21 @@ under Linux. </para>
|
|||
|
||||
<sect1><title>Definitions: Video Card and 3D Terminology</title>
|
||||
|
||||
<para>We'll cover some terminology that you'll see when reading about games in
|
||||
general. This stuff prolly isn't crucial to actually getting a game working,
|
||||
but will help when deciding what hardware is best for you.</para>
|
||||
<para>We'll cover terminology that you'll see when reading about video cards
|
||||
and games. This stuff isn't crucial to actually getting a game working, but
|
||||
will help when deciding what hardware and software options are best for
|
||||
you.</para>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Textures</title>
|
||||
|
||||
<para> A rendered scene is basically made up of polygons and lines. A
|
||||
texture is a 2D image (usually a bitmap) covering the polygons of a 3D
|
||||
world. Think of it as a coat of paint for the polygons. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>T&L: Texture and Lighting</title>
|
||||
|
@ -797,19 +810,153 @@ but will help when deciding what hardware is best for you.</para>
|
|||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>AA: Anti Aliasing</title>
|
||||
|
||||
<para> Anti aliasing is the smoothing of jagged edges along a rendered
|
||||
curve or polygon. Individual pixels are square objects, and drawing an
|
||||
angled line or curve with them will result in a “stair-step”
|
||||
effect, also known as the “jaggies”. This is when pixels
|
||||
make, what should be a smooth curve or line, jagged. AA uses
|
||||
computationally expensive filtering techniques to smooth out these jagged
|
||||
edges. This can improve a game's visuals, but can also dramatically
|
||||
degrade performance. </para>
|
||||
|
||||
<para> AA is actually used in a number of situations, For instance, when
|
||||
you magnify a picture, you'll notice lines that were once smooth are now
|
||||
jagged (try it with The Gimp!). Font rendering is another big
|
||||
application for AA techniques. </para>
|
||||
|
||||
<para> AA can be done either by the application itself (as with The Gimp
|
||||
or the XFree86 font system) or by hardware, if your video card supports
|
||||
it. Since AA is CPU intensive, it's more desirable to perform it in
|
||||
hardware, but if we're talking about semi-static applications, like The
|
||||
Gimp, this really isn't an issue. For dynamic situations, like games,
|
||||
doing AA in hardware can be crucial. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>FSAA: Full Screen Anti-Aliasing</title>
|
||||
|
||||
<para> FSAA is "Full Screen Anti-Aliasing". Anti-aliasing is an artist's
|
||||
technique for rendering an image, scaling it to a larger resolution and
|
||||
then rescaling it back down to the smaller resolution. This has the
|
||||
effect of eliminating the "jaggies"; random pixels that make curved
|
||||
surfaces look uncurved or broken. FSAA dramatically improves a game's
|
||||
visuals but can degrade overall performance by lowering the framerate
|
||||
since the video card has to render multiple images for every task.
|
||||
<para> FSAA is “Full Screen Anti-Aliasing”. It usually
|
||||
involves drawing a magnified version of the entire screen in a separate
|
||||
framebuffer, performing AA on the entire image and rescaling it back to
|
||||
the normal resolution. As you can imagine, this is extremely CPU
|
||||
intensive. You will never see non hardware accelerated FSAA. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Mip Mapping</title>
|
||||
|
||||
<para> Mip mapping is a technique where several scaled copies of the same
|
||||
texture are stored in the video card memory to represent the texture at
|
||||
different distances. When the texture is far away a smaller version of
|
||||
the texture (mip map) is used. When the texture is near, a bigger one is
|
||||
used. Mip mapping can be used regardless of filtering method (see
|
||||
below). Mip mapping reduces memory bandwidth requirements since the
|
||||
images are in hardware, but it also offers better quality in the rendered
|
||||
image. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2><title>Texture Filtering</title>
|
||||
|
||||
<para> Texture filtering is the fundamental feature required to present
|
||||
the sweet 3D graphics. It's used for a number of purposes, like making
|
||||
adjacent textures blend smoothly and making textures viewed from an angle
|
||||
(think of looking at a billboard from an extreme angle) look realistic.
|
||||
There are several common texture filtering techniques including
|
||||
point-sampling, bilinear, trilinear and anisotropic filtering. </para>
|
||||
|
||||
<para> One thing to keep in mind is that when I talk about `performance
|
||||
hits', the performance hit depends on what resolution you're running at.
|
||||
For instance, at a low resolution you may get only a very slight hit by
|
||||
using trilinear filtering instead of bilinear filtering. But at high
|
||||
resolutions, the performance hit may be enormous. Also, I'm not aware of
|
||||
any card that uses anisotropic texture filtering. TNT drivers claim they
|
||||
do, but I've read that these drivers still use trilinear filtering when
|
||||
actually rendering an image to the screen. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Point Sampling Texture Filtering</title>
|
||||
|
||||
<para> Point sampling is rare these days, but if you run a game with
|
||||
`software rendering' (which you'd need to do if you run a 3D accelerated
|
||||
game without a 3D accelerated board) you're likely to see it used. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Bilinear Texture Filtering</title>
|
||||
|
||||
<para> Bilinear filtering is a computationally inexpensive but low
|
||||
quality texture filtering. It approximates the gaps between textures by
|
||||
sampling the color of the four closest (above, below, left and right)
|
||||
texels. All modern 3D accelerated video cards can do bilinear filtering
|
||||
in hardware with no performance hit. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Trilinear Texture Filtering</title>
|
||||
|
||||
<para> Trilinear filtering is a high quality bilinear filter which uses
|
||||
the four closest pixels in the second most suitable mip map to produce
|
||||
smoother transitions between mip map levels. Trilinear filtering samples
|
||||
eight pixels and interpolates these before rendering, twice as much as
|
||||
bi-linear does. Trilinear filtering always uses mip mapping. Trilinear
|
||||
filtering helps eliminate the banding effect that appears between adjacent
|
||||
MIP map levels. Most modern 3D accelerated video cards can perform
|
||||
trilinear filtering in hardware with little or no performance hit.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Anisotropic Texture Filtering</title>
|
||||
|
||||
<para> Anisotropic filtering is the best but most CPU intensive of the
|
||||
three common texture filtering methods. Trilinear filtering is capable of
|
||||
producing fine visuals, but it only samples from a square area which in
|
||||
some cases is not the ideal way. Anisotropic (meaning `from any
|
||||
direction') samples from more than 8 pixels. The number of sampled pixels
|
||||
and which sampled pixels it uses depends on the viewing angle of the
|
||||
surface relative to your screen. It shines when viewing alphanumeric
|
||||
characters at an angle. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Z Buffering</title>
|
||||
|
||||
<para> A Z buffer is a portion of RAM which represents the distance
|
||||
between the viewer (you) and each pixel of an object. Many modern 3D
|
||||
accelerated cards have a Z buffer in their video RAM, which speeds things
|
||||
up considerably, but Z buffering can also be done by the application's
|
||||
rendering engine. </para>
|
||||
|
||||
<para> Every object or pixel has a stacking order, like a deck of cards.
|
||||
When objects are rendered into a 2D frame buffer, the rendering engine
|
||||
removes hidden surfaces by using the Z buffer. There are two approaches
|
||||
to this. Dumb engines simply draw far objects first and close objects
|
||||
last, obscuring objects below them in the Z buffer. Smart engines will
|
||||
calculate what portions of objects will be obscured by objects above them
|
||||
and simply not render the portions that you won't see anyhow. For
|
||||
complicated textures this is a huge savings in processor work. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
|
@ -827,116 +974,123 @@ but will help when deciding what hardware is best for you.</para>
|
|||
XF86Config (or XF86Config-4) file. </para>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Getting information about your X system</title>
|
||||
|
||||
|
||||
<sect3><title>Probeonly</title>
|
||||
|
||||
<para> There are many ways to get information about your X system. A
|
||||
popular method is using probeonly. From a console (and without X already
|
||||
running), type: </para>
|
||||
<para> There are many ways to get information about your X system. A
|
||||
popular method is using probeonly. From a console (and without X
|
||||
already running), type: </para>
|
||||
|
||||
<screen>X -probeonly 2> X.out</screen>
|
||||
<screen>X -probeonly 2> X.out</screen>
|
||||
|
||||
<para> Yes, that's a single dash; so much for standards. The output of
|
||||
X goes to stderr, so we have to redirect stderr with "2>" to a file named
|
||||
X.out. This file pretty much has everything there is to know about X.
|
||||
Go ahead and look at it. It's chock full of useful information. It's
|
||||
crucial that you know the difference between the different the various
|
||||
markers: </para>
|
||||
<para> Yes, that's a single dash; so much for standards. The output
|
||||
of X goes to stderr, so we have to redirect stderr with "2>" to a file
|
||||
named X.out. This file pretty much has everything there is to know
|
||||
about X. Go ahead and look at it. It's chock full of useful
|
||||
information. It's crucial that you know the difference between the
|
||||
different the various markers: </para>
|
||||
|
||||
<screen>
|
||||
(--) probed (**) from config file (==) default setting
|
||||
(++) from command line (!!) notice (II) informational
|
||||
(WW) warning (EE) error (??) unknown.
|
||||
</screen>
|
||||
<screen>
|
||||
(--) probed (**) from config file (==) default setting
|
||||
(++) from command line (!!) notice (II) informational
|
||||
(WW) warning (EE) error (??) unknown.
|
||||
</screen>
|
||||
|
||||
<para> Here's an example of what useful information I can glean from my
|
||||
output: </para>
|
||||
<para> Here's an example of what useful information I can glean from my
|
||||
output: </para>
|
||||
|
||||
|
||||
<para>I'm running at 16 bpp color:</para>
|
||||
<para>I'm running at 16 bpp color:</para>
|
||||
|
||||
<screen>(**) TDFX(0): Depth 16, (--) framebuffer bpp 16</screen>
|
||||
<screen>(**) TDFX(0): Depth 16, (--) framebuffer bpp 16</screen>
|
||||
|
||||
<para>X has detected what my videocard chipset and videoram are:</para>
|
||||
<para>X has detected what my videocard chipset and videoram are:</para>
|
||||
|
||||
<screen>
|
||||
(--) Chipset 3dfx Voodoo5 found
|
||||
(--) TDFX(0): VideoRAM: 32768 kByte Mapping 65536 kByte
|
||||
</screen>
|
||||
|
||||
<para> As I said, it's all here. Sometimes it's hard to find what
|
||||
you're looking for. Also, if X is already running, you'll have to kill
|
||||
it first, and sometimes you don't want to have to do this. There are
|
||||
other ways of getting information about X, but I don't think any of them
|
||||
have the wealth of knowledge that this method gives. We'll cover them
|
||||
shortly. </para>
|
||||
<para> As I said, it's all here. Sometimes it's hard to find what
|
||||
you're looking for. Also, if X is already running, you'll have to kill
|
||||
it first, and sometimes you don't want to have to do this. There are
|
||||
other ways of getting information about X, but I don't think any of
|
||||
them have the wealth of knowledge that this method gives. We'll cover
|
||||
them shortly. </para>
|
||||
|
||||
<para> On Debian (and perhaps other distros?) the output of startx goes
|
||||
to the file /var/log/Xfree86.0.log, so you don't have to do the
|
||||
"-probeonly" business. </para>
|
||||
<para> On Debian (and perhaps other distros?) the output of startx goes
|
||||
to the file /var/log/Xfree86.0.log, so you don't have to do the
|
||||
"-probeonly" business. </para>
|
||||
|
||||
</sect3>
|
||||
|
||||
|
||||
|
||||
<sect3><title>Getting info about your setup: xvidtune</title>
|
||||
|
||||
<para> xvidtune is your friend when your X screen is shifted a little bit
|
||||
too far to the right, or if the vertical length is too small to fit on
|
||||
your monitor. However, it's a great diagnostic tool also. It'll give
|
||||
you: </para>
|
||||
<para> xvidtune is your friend when your X screen is shifted a little
|
||||
bit too far to the right, or if the vertical length is too small to fit
|
||||
on your monitor. However, it's a great diagnostic tool also. It'll
|
||||
give you: </para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>the hsync/vsync range specified in your XFree86Config file
|
||||
</para></listitem>
|
||||
<listitem><para>the 4 horizontal and 4 vertical numbers which defines your
|
||||
videomode (the 1st horizontal/vertical numbers gives the screen resolution).
|
||||
These 8 numbers will tell you which modeline your X uses. See the XFree86
|
||||
Video Modetiming Howto for more information.</para></listitem>
|
||||
<listitem><para>the "dot clock" your videocard is running at.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem><para>the hsync/vsync range specified in your XFree86Config file
|
||||
</para></listitem>
|
||||
<listitem><para>the 4 horizontal and 4 vertical numbers which defines
|
||||
your videomode (the 1st horizontal/vertical numbers gives the screen
|
||||
resolution). These 8 numbers will tell you which modeline your X
|
||||
uses. See the XFree86 Video Modetiming Howto for more
|
||||
information.</para></listitem>
|
||||
<listitem><para>the "dot clock" your videocard is running at.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect3>
|
||||
|
||||
</sect3>
|
||||
|
||||
|
||||
<sect3><title>Getting info about your setup: xwininfo</title>
|
||||
|
||||
<para> xwininfo tells you all sorts of information about X windows. And
|
||||
actually, your "background" or "root" window is considered a window too.
|
||||
So when xwininfo asks you to click on the window you want the information
|
||||
on, click on your background. It'll tell you things like: </para>
|
||||
<para> xwininfo tells you all sorts of information about X windows.
|
||||
And actually, your "background" or "root" window is considered a window
|
||||
too. So when xwininfo asks you to click on the window you want the
|
||||
information on, click on your background. It'll tell you things like:
|
||||
</para>
|
||||
|
||||
<segmentedlist>
|
||||
<seglistitem><seg>Screen resolution</seg><seg>Width and Height</seg>
|
||||
</seglistitem>
|
||||
<seglistitem><seg>color bpp </seg><seg>Depth </seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
<segmentedlist>
|
||||
<seglistitem><seg>Screen resolution</seg><seg>Width and Height</seg>
|
||||
</seglistitem>
|
||||
<seglistitem><seg>color bpp </seg><seg>Depth </seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
<para> and a few other things which are interesting but not immediately
|
||||
relevent to our subject, like "Window Gravity State" which tells where
|
||||
new windows tend to be placed by the window manager. </para>
|
||||
<para> and a few other things which are interesting but not immediately
|
||||
relevent to our subject, like "Window Gravity State" which tells where
|
||||
new windows tend to be placed by the window manager. </para>
|
||||
|
||||
</sect3>
|
||||
|
||||
|
||||
|
||||
<sect3><title>Other sources of information</title>
|
||||
|
||||
<para> xdpyinfo gives cool stuff, like X version and loaded extensions
|
||||
(invaluable when trying to see what's missing, like GLX, DRI,
|
||||
XFree86-VidMode, etc.). </para>
|
||||
<para> <command>xdpyinfo</command> gives cool stuff, like X version and
|
||||
loaded extensions (invaluable when trying to see what's missing, like
|
||||
GLX, DRI, XFree86-VidMode, etc.). </para>
|
||||
|
||||
</sect3>
|
||||
|
||||
|
||||
|
||||
<sect3><title>Getting information about your 3D system</title>
|
||||
|
||||
<para> glxinfo gives lots of useful information about OpenGL (whether
|
||||
direct rendering is being used or not, the currently installed versions
|
||||
of glx and mesa), vendor/renderer strings, the GL library files being
|
||||
used and more. </para>
|
||||
<para> glxinfo gives lots of useful information about OpenGL (whether
|
||||
direct rendering is being used or not, the currently installed versions
|
||||
of glx and mesa), vendor/renderer strings, the GL library files being
|
||||
used and more. </para>
|
||||
|
||||
</sect3>
|
||||
|
||||
|
@ -1194,23 +1348,31 @@ happens when I press the left arrow key twice", then you're in business.
|
|||
|
||||
|
||||
|
||||
<sect2><title>Google</title>
|
||||
<sect2><title>Google Group Search</title>
|
||||
|
||||
<para> Every post made to usenet gets archived at this website. The
|
||||
archive used used to be called deja (www.deja.com) but it was bought by
|
||||
google. Most people still know the archive by "deja", so I'll call it that
|
||||
for now. </para>
|
||||
<para> Every post made to Usenet gets archived at Google. This archive used
|
||||
to be at <systemitem role="url">www.deja.com</systemitem>, but was bought by
|
||||
Google. Many people still know the archive by “deja”. </para>
|
||||
|
||||
<para> You are not a true Linux user until you use deja to fix a problem.
|
||||
It's almost an absolute certainty that whatever problem you have with Linux
|
||||
(whether gaming related or not) has already been asked about on deja.
|
||||
Moreover, chances are very good it has been answered. Not once, not twice,
|
||||
but many times over. If you don't understand the first response you see
|
||||
(or if it doesn't work), then you'll almost certainly have many other
|
||||
replies to read and try out. Deja should be one of your first reactions to
|
||||
any problem. </para>
|
||||
<para> It's almost absolutely certain that whatever problem you have with
|
||||
Linux, gaming related or not, has already been asked about on Usenet.
|
||||
Moreover, chances are nearly equally as certain that the answer has been
|
||||
posted on Usenet. Not once, not twice, but many times over. If you don't
|
||||
understand the first response you see (or if it doesn't work), then try one
|
||||
of the other many replies. If the page is not in a language you can
|
||||
understand, there are many translation sites which will convert the text
|
||||
into whatever language you like, including <systemitem role="url">
|
||||
http://www.freetranslation.com</systemitem> and <systemitem role="url">
|
||||
http://translation.lycos.com</systemitem>. My web browser of
|
||||
choice, Opera (available at <systemitem role="url">http://www.opera.com
|
||||
</systemitem> allows you to use the right mouse button to select a portion
|
||||
of text and left click the selection to translate it into another language.
|
||||
Very useful when a Google group search yields a page in German which looks
|
||||
useful and my girlfriend (who reads/speaks German pretty well) isn't
|
||||
around. </para>
|
||||
|
||||
<para> Go straight to the advanced search and point your browser to: </para>
|
||||
<para> The Google group search has a basic and advanced search page. Don't
|
||||
bother with the simple search. The advanced search is at
|
||||
|
||||
<blockquote><para>
|
||||
<systemitem role="url">http://groups.google.com/advanced_group_search
|
||||
|
@ -1218,24 +1380,22 @@ happens when I press the left arrow key twice", then you're in business.
|
|||
</para></blockquote>
|
||||
|
||||
<para> It's easy to use. For example, if my problem was that Quake III
|
||||
crashed everytime Lucy jumps, I would enter on the "Find messages with all
|
||||
of the words" textbox:</para>
|
||||
crashed everytime Lucy jumps, I would enter on the “Find messages with
|
||||
all of the words” textbox:</para>
|
||||
|
||||
<screen>linux quake3 crash lucy jumps</screen>
|
||||
|
||||
<para> or if you can't get sound to work on Unreal Tournament: </para>
|
||||
|
||||
<screen>linux UT sound problem</screen>
|
||||
|
||||
<para> you may want to include your soundcard in the search. There are
|
||||
fields for which newsgroup you want to narrow your search to. Take the
|
||||
time to read and understand what each field means. I promise you. You
|
||||
won't be disappointed with this service. Use it, and you'll be a much
|
||||
happier person. </para>
|
||||
<para> There are fields for which newsgroup you want to narrow your search
|
||||
to. Take the time to read and understand what each field means. I promise
|
||||
you. You won't be disappointed with this service. Use it, and you'll be a
|
||||
much happier person. Do note that they don't archive private newsgroups,
|
||||
like Loki Software's news server. However, so many people use Usenet, it
|
||||
almost doesn't matter. </para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
<sect2><title>Debugging: call traces and core files</title>
|
||||
|
||||
<para> This is generally not something you'll do for commercial games. For
|
||||
|
|
Loading…
Reference in New Issue