![](sad.gif)
Qbasic 3d rotation and buffing
does anybody know how to program qbasic 3d objects so they appear where they should and use rotation on an object. i can't do most of this i checked qbasic 3d enchanced but they don't explain it clearly enough.
.
Edited by - R3sistance on October 5, 2001 7:08:29 AM
![](sad.gif)
Well, if you're using qbasic to display 3D graphics, my advice is: get one of those library thingies, like DirectQB. This site has a few 3D demos, IIRC: http://www.neozones.cjb.net/. All the ones that run at an appreciable speed use a library of some sort. As for the maths involved, I can't help much there sorry ![](smile.gif)
3D graphics in qbasic are a pain in the bum and don't work very well to boot.
Edited by - Dracoliche on October 5, 2001 9:31:47 AM
![](smile.gif)
3D graphics in qbasic are a pain in the bum and don't work very well to boot.
Edited by - Dracoliche on October 5, 2001 9:31:47 AM
The best way to do serious graphics in QB, short of using an external library, is to fill one of those PUT arrays yourself using POKE, and then PUT it on the screen. This is the only way you can do pixel plotting with any kind of speed short of using ASM. I think you'll end up using MODE 13 (known as 13h to C++ and ASM programmers)
Here's an example that will fill the screen with "static":
There may be errors in this code; but I'm sure that it'll get you headed along the right track. The people at qbasic.com should be able to help you.
Once you can do fast pixel-plotting using the aforementioned technique (PSET is SLOOOOOOW) then you'll just have to do the same old 3d projection and tranformation stuff everyone else does.
That is:
screen_x = vertex.x / vertex.z
screen_y = vertex.y / vertex.z
You can find a simple tutorial at http://www.qbasicnews.com/files/Tutorials/tutor8.txt. It isn't the greatest in the world, but it's a start.
Hope that helps.
Edited by - TerranFury on October 8, 2001 3:32:07 PM
Here's an example that will fill the screen with "static":
'$DYNAMICDEFINT A-ZSCREEN 13'320 x 200CLS'Make grayscale pallette (0 = black; 255 = white)DIM v AS INTEGERFOR v = 0 TO 255OUT &H3C8, v 'color indexOUT &H3C9, INT(v * (63 / 255)) 'rOUT &H3C9, INT(v * (63 / 255)) 'gOUT &H3C9, INT(v * (63 / 255)) 'bNEXT v'Note: ArraySize = ((ScreenWidth * ScreenHeight) + 4) * (BPP / 16) = 32002DIM pixels(32002) AS INTEGER 'Create arrayDIM memloc AS LONGmemloc = VARSEG(pixels(0)) 'Get memory location of array' Write header.' 1st 2 words = width * 8' 2nd 2 words = height * 1' Note: word = 2 bytes = 16 bits = 1 Integer Variablepixels(0) = 320 * 8pixels(1) = 200DEF SEG = memloc 'Gain direct access to array memory offset = 4 FOR y = 0 TO 199 FOR x = 0 TO 319 POKE offset, INT(RND * 256) 'Put random value at x, y offset = offset + 1 NEXT x NEXT yDEF SEGPUT (0, 0), pixels, PSET
There may be errors in this code; but I'm sure that it'll get you headed along the right track. The people at qbasic.com should be able to help you.
Once you can do fast pixel-plotting using the aforementioned technique (PSET is SLOOOOOOW) then you'll just have to do the same old 3d projection and tranformation stuff everyone else does.
That is:
screen_x = vertex.x / vertex.z
screen_y = vertex.y / vertex.z
You can find a simple tutorial at http://www.qbasicnews.com/files/Tutorials/tutor8.txt. It isn't the greatest in the world, but it's a start.
Hope that helps.
Edited by - TerranFury on October 8, 2001 3:32:07 PM
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement