안녕하세요 Open TK를 사용하여 OpenGL에서 텍스처를 사용하려고합니다. official page of OpenTK Framework에서 기본 예제를 얻었지만 작동하지 않았습니다. 여기에 stackoverflow에 대한 도움이 필요하며 코드 일부가 변경되었지만 여전히 작동하지 않습니다. (찾을 수 및 시험 : OpenTk texture not display the image를)렌더러가 Open TK에서 텍스처를 사용하지 않습니다
지금까지 나는이 조각과 함께, 그러나 이것은 텍스처 (대신 흰색 표시) 표시되지 않습니다
(@The 들러 제안)업데이트]
을
GL.ClearColor(Color.MidnightBlue);
GL.Enable(EnableCap.Texture2D);
GL.Viewport(0, 0, control.Width, control.Height);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(0, 4, 0, 3, -1, 1);
GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
GL.GenTextures(1, out textureId);
GL.BindTexture(TextureTarget.Texture2D, textureId);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
var bmp = new Bitmap(@"C:\myfolder\texture.png");
var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);
System.Windows.Forms.MessageBox.Show("Erro: " + GL.GetError());
bmp.UnlockBits(data);
OpenTK.GLControl.Paint
이벤트 처리기에서 :
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.BindTexture(TextureTarget.Texture2D, textureId);
GL.Begin(BeginMode.Quads);
GL.TexCoord2(0, 0); GL.Vertex2(0, 0);
GL.TexCoord2(0, 1); GL.Vertex2(0, 1);
GL.TexCoord2(1, 1); GL.Vertex2(1, 1);
GL.TexCoord2(1, 0); GL.Vertex2(1, 0);
GL.End();
control.SwapBuffers();
에로 코드의 첫 번째 부분은 1281
= ErrorCode.InvalidValue
입니다. 텍스처를 렌더링하지 않는 이유는 누구나 알 수 있습니까?
InvalidValue 오류의 원인이되는 행을 찾아야합니다. 'GL.GetError()'에 더 많은 호출을 추가하거나 OpenTK.dll의 디버그 버전을 컴파일하고 사용하십시오 (OpenGL 오류가 발생할 때마다 디버그 버전은 예외를 던집니다). –