开发者

Can't see textures or colors on vertices being drawn

I have the following code in OpenTK:

        unsafe
        {
            Vector3* data = (Vector3*)Marshal.AllocHGlobal(
                                  Marshal.SizeOf(typeof(Vector3)) * simpleVertices.Count);
            Vector2* uv = (Vector2*)Marshal.AllocHGlobal(
                                  Marshal.SizeOf(typeof(Vector2)) * simpleVertices.Count);
            for(int i = 0; i < simpleVertices.Count; i++)
            {
                ((Vector3*)data)[i] = simpleVertices[i];
                Vector2 thisuv = uvData[i];
                ((Vector2*)uv)[i] = uvData[i];

            }

            GL.BindTexture(All.Texture2D, texture.GLTexture.OpenGLName);
            GL.TexParameter(All.Texture2D, All.TextureWrapS, (int)TextureWrapMode.Repeat);
            GL.TexParameter(All.Texture2D, All.TextureWrapT, (int)TextureWrapMode.Repeat);

            byte []squareColors = new byte[simpleVertices.Count];
            Random.NextBytes(squareColors);

            GL.ColorPointer (vertices.Count, All.UnsignedByte, 0, squareColors);

            GL.VertexPointer(3, All.Float, sizeof(Vector3), new IntPtr(data));
            GL.DrawArrays(All.Triangles, 0, simpleVertices.Count);


            Marshal.FreeHGlobal((IntPtr)data);
            Marshal.FreeHGlobal((IntPtr)uv);
        }

I know the data being given for vertices anduv are correct (at least they work fine in my XNA renderer) and what I'm seeing is white polygons being drawn correctly on screen.

From my code above I should be seeing an assortment of colours since I'm populating squareColours with a random number of bytes (I've verified that squareColors is being filled up with random bytes) but I'm not, the vertices are all being drawn as white.

I've also tried binding a texture (via GL.BindTexture) and that has also failed.

Any ideas why this isn't working?

edit: when I added to enable color (see first comment on this post) the app crashed out with the following output:

Stacktrace:

at (wrapper managed-to-native) OpenTK.Graphics.ES11.GL/Core.DrawArrays (OpenTK.Graphics.ES11.All,int,int) at OpenTK.Graphics.ES11.GL.DrawArrays (OpenTK.Graphics.ES11.All,int,int) [0x00000] in /Users/plasma/Source/iphone/monotouch/OpenGLES/OpenTK/Graphics/ES11.iPhone/GL.cs:1326 at Jabber.J3D.Shape.Draw_IOS () [0x00171] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/J3D/Shape_iOS.cs:136 at Jabber.J3D.Shape.Draw () [0x00000] in /Users/ahm开发者_运维技巧edhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/J3D/Shape.cs:255 at Jabber.J3D.PhysicShape.Draw () [0x00000] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/J3D/PhysicShape.cs:46 at Jabber.Scene.GameScene.Draw () [0x0001d] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/Scene/GameScene.cs:299 at Jabber.GameScreenManager.Screen.Draw () [0x0001f] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/GameScreenManager/Screen.cs:150 at ChicksnVixens.Screens.GameplayScreen.Draw () [0x00000] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/ChicksnVixens/Screens/GameplayScreen.cs:481 at Jabber.GameScreenManager.ScreenManager.Draw () [0x00054] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/GameScreenManager/ScreenManager.cs:92 at Jabber.BaseGame.Draw (Microsoft.Xna.Framework.GameTime) [0x0002c] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/BaseGame.cs:95 at ChicksnVixens.ChicksnVixensGame.Draw (Microsoft.Xna.Framework.GameTime) [0x00000] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/ChicksnVixens/ChicksnVixensGame.cs:414 at Microsoft.Xna.Framework.Game.DoDraw (Microsoft.Xna.Framework.GameTime) [0x0001e] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnCommon/Game/GameCommon.cs:205 at Microsoft.Xna.Framework.ExEnEmTouchGameView.OnRenderFrame (OpenTK.FrameEventArgs) [0x0002e] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnEmTouch/ExEnEmTouchGameView.cs:329 at OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000af] in /Users/plasma/Source/iphone/monotouch/OpenGLES/OpenTK/Platform/iPhoneOS/iPhoneOSGameView.cs:592 at MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] in /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction.cs:45 at (wrapper runtime-invoke) object.runtime_invoke_void_this_ (object,intptr,intptr,intptr) at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00038] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:26 at ChicksnVixens.Program.Main (string[]) [0x00000] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/ChicksnVixens/MonoTouch Program.cs:24 at (wrapper runtime-invoke) .runtime_invoke_void_object (object,intptr,intptr,intptr)

Native stacktrace:

0 aChicks

0x000c5d00 mono_handle_native_sigsegv + 343 1 aChicks 0x0000fce0 mono_sigsegv_signal_handler + 322 2 libSystem.B.dylib 0x95fee48b _sigtramp + 43 3 ???

0xffffffff 0x0 + 4294967295 4

GLEngine

0x08645753 gleLLVMArrayFunc + 67 5

GLEngine

0x0863cba2 gleDrawArraysOrElements_ExecCore + 856 6 GLEngine

0x08642bbe glDrawArrays_IMM_Exec + 332 7 OpenGLES

0x0087c308 glDrawArrays + 57 8 ??? 0x0c3c9b34 0x0 + 205298484 9 ???

0x0c3c9a9c 0x0 + 205298332 10 ???

0x0f0956c8 0x0 + 252270280 11 ???

0x0f0939c4 0x0 + 252262852 12 ???

0x0f09397c 0x0 + 252262780 13 ???

0x0ecdb286 0x0 + 248361606 14 ???

0x0c3c709a 0x0 + 205287578 15 ???

0x0f0927c4 0x0 + 252258244 16 ???

0x0c3c44cd 0x0 + 205276365 17 ???

0x0c3c3fed 0x0 + 205275117 18 ???

0x0c3c3e9a 0x0 + 205274778 19 ???

0x0c3c3d73 0x0 + 205274483 20 ???

0x0cc03166 0x0 + 213922150 21 ???

0x0cbfd578 0x0 + 213898616 22 ???

0x0cbfd130 0x0 + 213897520 23 ???

0x05e861e8 0x0 + 99115496 24 aChicks 0x0000fa9b mono_jit_runtime_invoke + 1332 25 aChicks

0x001d9f01 mono_runtime_invoke + 137 26 aChicks

0x0027e52b monotouch_trampoline + 2527 27 Foundation

0x00619749 NSFireTimer + 125 28 CoreFoundation

0x014398c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION + 19 29 CoreFoundation 0x0143ae74 __CFRunLoopDoTimer + 1220 30 CoreFoundation

0x013972c9 __CFRunLoopRun + 1817 31 CoreFoundation

0x01396840 CFRunLoopRunSpecific + 208 32 CoreFoundation

0x01396761 CFRunLoopRunInMode + 97 33 GraphicsServices

0x028bc1c4 GSEventRunModal + 217 34 GraphicsServices

0x028bc289 GSEventRun + 115 35 UIKit 0x008abc93 UIApplicationMain + 1160 36 ???

0x05e84b8b 0x0 + 99109771 37 ???

0x05e83fb4 0x0 + 99106740 38 ???

0x05e83cee 0x0 + 99106030 39 ???

0x05e83e46 0x0 + 99106374 40 aChicks 0x0000fa9b mono_jit_runtime_invoke + 1332 41 aChicks

0x001d9f01 mono_runtime_invoke + 137 42 aChicks

0x001dc560 mono_runtime_exec_main + 669 43 aChicks

0x001db96e mono_runtime_run_main + 843 44 aChicks

0x0009cdd2 mono_jit_exec + 200 45 aChicks

0x00003362 main + 3838 46 aChicks

0x00002249 _start + 208 47 aChicks

0x00002178 start + 40

Debug info from gdb:

/tmp/mono-gdb-commands.ZEI8zH:1: Error in sourced command file: unable to debug self


You have the wrong arguments to ColorPointer. The first argument is the number of components per color. Use 3 for RGB-colors.

Try this:

byte[] squareColors = new byte[simpleVertices.Count * 3];
Random.NextBytes(squareColors);
GL.ColorPointer (3, All.UnsignedByte, 0, squareColors);


You need to enable texturing:

glEnable(GL_TEXTURE_2D);

(should be easy to figure out the OpenTk equivalent)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜