Tag: 纹理

如何在XNA中的3D地形上绘制圆圈?

所以我一直在网上寻找这个问题的答案,但我似乎错过了一些东西。 我有一个小项目在XNA 4.0中动态创建3D地形,但我希望能够在地形上绘制一个圆(或任何其他形状,但让我们先用圆圈)。 现在我已经阅读了一些关于“投射纹理”的内容,但我承认,当涉及着色器语言时,我完全失去了。 我的想法是,我可以(动态地)创建一个基本形状,比如一个直径为2’单位的圆,然后在地形上绘制它作为光标所在的指示器。 (我能够在3D地形上获得光标位置。) 有谁知道如何做到这一点,是否需要使用着色器? 对此事的任何帮助都是相关的! 提前致谢!

超级模糊纹理 – XNA

当我近距离观察纹理时,我似乎得到了非常模糊的纹理。 我正在创建一个类似Minecraft的地形,我希望纹理像素化 – 就像它是制作而不是XNA试图为我平滑它。 以下是它的显示方式: http : //s1100.photobucket.com/albums/g420/darestium/?action = view&current = bluryminecraftterrain.png 任何建议都会受到很多限制。

创建一个健康栏

我正在尝试创建一个有效的健康栏,我尝试过类似的方法 创建包含我创建的健康栏纹理的GUI.Box(),但这会使健康栏按比例resize: 使用Texture2D.Resize()方法在没有 GUI.Box()的情况下调整纹理本身的大小,但是当我使用Texture2D.Resize()方法时,我的纹理变为黑色 。 它看起来像这样: 我的代码看起来像这样。 对其进行了编辑,以便删除不相关的部分以便于阅读。 当我resize时,为什么我的健康栏会变黑? 有什么办法可以防止这种情况发生吗? 先感谢您!

OpenGL试图绘制多个2d纹理,只出现第一个

我有一个问题,我正在尝试使用纹理绘制太阳系(每个行星一个纹理),当我绘制纹理时,只显示第一个。 其余的都没有。 我的init函数遍历我的文件,将纹理保存到对象中,然后遍历对象。 在迭代时,它会生成纹理并使用OpenGL调用将它们绑定到名称。 SharpGL.OpenGL gl = args.OpenGL; gl.Enable(SharpGL.OpenGL.GL_BLEND); gl.Enable(SharpGL.OpenGL.GL_TEXTURE_2D); gl.BlendFunc(SharpGL.Enumerations.BlendingSourceFactor.SourceAlpha, SharpGL.Enumerations.BlendingDestinationFactor.OneMinusSourceAlpha); gl.ClearColor(0, 0, 0, 1); foreach (ImageWrapper iw in m_images) { uint[] texNames = new uint[1]; gl.GenTextures(1, texNames); gl.BindTexture(SharpGL.OpenGL.GL_TEXTURE_2D, texNames[0]); gl.TexParameter(SharpGL.OpenGL.GL_TEXTURE_2D, SharpGL.OpenGL.GL_TEXTURE_WRAP_S, SharpGL.OpenGL.GL_REPEAT); gl.TexParameter(SharpGL.OpenGL.GL_TEXTURE_2D, SharpGL.OpenGL.GL_TEXTURE_WRAP_T, SharpGL.OpenGL.GL_REPEAT); gl.TexParameter(SharpGL.OpenGL.GL_TEXTURE_2D, SharpGL.OpenGL.GL_TEXTURE_MAG_FILTER, SharpGL.OpenGL.GL_LINEAR); gl.TexParameter(SharpGL.OpenGL.GL_TEXTURE_2D, SharpGL.OpenGL.GL_TEXTURE_MIN_FILTER, SharpGL.OpenGL.GL_LINEAR); gl.TexImage2D(SharpGL.OpenGL.GL_TEXTURE_2D, 0, 3, iw.BitmapSource.PixelWidth, iw.BitmapSource.PixelHeight, 0, SharpGL.OpenGL.GL_BGRA, SharpGL.OpenGL.GL_UNSIGNED_BYTE, iw.Pixels); iw.TextureHandle = texNames; […]

C#OpenTK – 纹理四边形

我最近下载了OpenTK。 我创建了一个基本的游戏类和四元组。 我尝试在我的四边形中渲染纹理,但它不起作用。 这是我的代码。 这是纹理的加载。 (纹理类只包含一个ID和一个Bitmap.GetWidth()和GetHeight()只返回Bitmap.Width和Bitmap.Height)。 Texture Texture = new Texture (); Texture.Bitmap = new Bitmap (Path); Texture.ID = GL.GenTexture (); GL.BindTexture (TextureTarget.Texture2D, Texture.ID); BitmapData data = Texture.Bitmap.LockBits (new Rectangle (0, 0, Texture.GetWidth (), Texture.GetHeight ()), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); GL.TexImage2D (TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, Texture.GetWidth(), Texture.GetHeight(), 0, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, PixelType.Bitmap, data.Scan0); Texture.Bitmap.UnlockBits (data); GL.TexParameter (TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)All.Linear); GL.TexParameter […]

3D基元,XNA 4.0上的透明纹理问题

我需要画一大堆立方体,每一面都有(可能)独特的纹理。 一些纹理也具有透明度的部分。 具有透明纹理的立方体后面的立方体应通过透明纹理显示。 但是,我绘制立方体的顺序似乎决定了透明度是否有效,这是我想要避免的。 看这里: cubeEffect.CurrentTechnique = cubeEffect.Techniques[“Textured”]; Block[] cubes = new Block[4]; cubes[0] = new Block(BlockType.leaves, new Vector3(0, 0, 3)); cubes[1] = new Block(BlockType.dirt, new Vector3(0, 1, 3)); cubes[2] = new Block(BlockType.log, new Vector3(0, 0, 4)); cubes[3] = new Block(BlockType.gold, new Vector3(0, 1, 4)); foreach(Block b in cubes) { b.shape.RenderShape(GraphicsDevice, cubeEffect); } 这是Draw方法中的代码。 它产生了这个结果: […]