GithubHelp home page GithubHelp logo

wentaozone / iminib3d Goto Github PK

View Code? Open in Web Editor NEW

This project forked from si-design/iminib3d

0.0 2.0 0.0 1.13 MB

OpenGL ES 1.1 3D engine for iOS. Based on the Blitz3D engine.

Home Page: http://www.blitzbasic.com/Community/topics.php?forum=119

iminib3d's Introduction

iMiniB3D v0.6
-------------

By Simon Harrison
Email: [email protected]
Twitter: @si_design

iMiniB3D Terms of Use
---------------------

You are free to use iMiniB3D as you wish.
If you do anything cool with it please let me know, and a credit in your published app/game would be very much appreciated!

iMiniB3D Info
------------- 

You will more than likely need a good grasp of C++ to use iMiniB3D effectively.
There's no iMiniB3D-specific documentation except what you're reading at the moment.
Please see the header files for a list of available functions.
There's mostly the same functions available as in MiniB3D for BlitzMax, with a few differences here and there. See 'MiniB3D -> iMiniB3D Differences' below.
See the Blitz3D online manual at www.blitzbasic.com for Blitz3D documentation (which MiniB3D and iMiniB3D is based on)

iMiniB3D is objected-oriented. There's no procedural interface available like there is for MiniB3D.
So instead of PositionEntity(entity,x,y,z), you must always use entity->PositionEntity(x,y,z).
For the 'Create' commands, static functions are used, e.g. Mesh* mesh=Mesh::CreateMesh(), Sprite* sprite=Sprite::CreateSprite()

Please feel free to email me at [email protected] about anything. I will try to help if possible.

Hints and Tips
--------------

By default the OpenGL view is displayed in portrait mode
For landscape mode, rotate your camera on the z axis by 90 degrees - e.g. cam->RotateEntity(0,0,90)
For best camera FOV, you will need to change your camera's CameraZoom - for Portrait set it to 1.75, for landscape set it to 1.5

MiniB3D -> iMiniB3D Differences
-------------------------------

+ iMiniB3D features built-in support for dynamic sphere -> dynamic mesh collisions - set any destination mesh's 'dynamic' flag to true to activate. See test app for example. Don't expect miracles, however!
- Spheremapping, cubemapping not available in iMiniB3D
- Anim textures not supported in iMiniB3D
~ TextureFilter has been renamed to AddTextureFilter in iMiniB3D
~ CopyEntity fully copies a mesh, so there is no shared surface data like there is in Blitz3D. You now cannot use the Mesh commands to affect all copied entities that share the same surface data

v0.6
----

added iPhone 5 display support
replaced CreateCube/Sphere/Cylinder/Cone functions with actual Blitz3D code - more efficient

v0.5
----

new project structure for Xcode 4
added retina dislay support
added new EntityBlend mode - no. 4, pre-multiplied alpha - use this for drawing sprites without black edges
added teapot example - performs software sphere mapping - slow!
changed Global::Graphics - now defaults to screen size of device
fixed FreeEntity bug - freeing anim meshes directly would cause a crash
fixed FreeEntity bug - freeing lights would cause a crash
fixed Game::End bug - ClearWorld was called twice
fixed Camera::Update mem leak - was not freeing new matrix
fixed CopyEntity mem leak - mem leak when copying meshes and sprites - thanks to ima747
fixed iOS 5/LLVM problems with LoadAnimMesh/LoadMesh - thanks to Yasha

v0.4
----

added EntityAutoFade to entity.mm
added AnimSeq, AnimLength, AnimTime and Animating to entity.mm
added LoadBank, PokeString, PeekString to bank.mm
changed Global::Graphics - added optional width and height parameters for iPad support. Defaults to iPhone screen size.
changed LoadAnimB3D - now loads from bank instead of file - faster
changed Global::UpdateWorld - split into UpdateCollisions and UpdateAnimations, which you can call separately
fixed CameraPick bug - first CameraPick didn't work
fixed banks bug - peeking/poking didn't always work correctly

v0.3
----

fixed Rnd, Rand
tidied string helper commands, added Split
added MeshColor, MeshRed, MeshGreen, MeshBlue, MeshAlpha and SurfaceColor, etc, commands for setting all vertex colors in a mesh/surface at once
optimised Mesh->Render() so that less OpenGL funcitons calls are made
fixed AddMesh - was adding duplicate triangles.
fixed ClearWorld - didn't work
added applicationWillTerminate method to application delegate, which calls game->End() just before program quits
changed ReadFile/WriteFile - they now return a NULL File object is unsuccessful, rather than ending program 
fixed Millisecs - didn't work
fixed CopyEntity bug - meshes are now fully copied - i.e. no shared surface data.
fixed EntityScaleY bug (non-global call returned EntityScaleX)
added TextureFilter functions (TextureFilter renamed to AddTextureFilter)
added recursive flag to all entity material functions
added EntityRed, EntityGreen, EntityBlue for when you wish to set entity color components separately
added 'sprite batch rendering' - will render all sprites using the same texture at once, using a single surface. To activate, use SpriteRenderMode sprite,2

v0.2
----

added Rnd, Rand, SeedRnd
added CameraProject, ProjectedX/Y/Z
reenabled vbo=true as default behaviour
reenabled LoadMesh. LoadAnimMesh was used in place before
added UpdateAllEntities, for faster UpdateWorld/RenderWorld - instead of iterating through every entity, only 'root' entities are iterated through (attached to hidden 'root root' entity) and their children - if an entity is hidden, that entities' children aren't iterated through
added file write functions
added CopyEntity
added CreateCone
added Tilt functions - see tilt app
added various Touch functions
fixed FreeEntity bug - camera wasn't being freed from camera list
added SpriteViewModes 3,4
fixed Instr bug
renamed text to string_helper and helper to maths_helper
added CountAllChildren, GetChildFromAll
added FindEntity
fixed FreeEntity bug
added missing picking commands
fixed blue ambient light bug
added Texture::CreateTextTexture
added EntityClass
added mipmapping

iminib3d's People

Contributors

si-design avatar

Watchers

James Cloos avatar 开水白菜 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.