glPopMatrix() 喊叫“setup_hardware_state 中不支持纹理格式”

2024-02-05

我正在尝试对 Linux 的私人视频播放器进行一些优化,旨在提高性能,因为播放 MP4 文件对 CPU 的占用很大,自从视频帧采用 YV12 编码并且 OpenGL 不提供显示此格式的本机方法。现在有一段代码在CPU上运行,在将图像发送到GPU进行显示之前将YV12转换为RGB,这会消耗100%的CPU处理。

我目前正在调查如何在无需编写着色器的情况下解码 YV12 帧进行 YV12 -> RGB 转换。据我了解,做到这一点的一种方法是通过GL_MESA_ycbcr_texture,显然我的系统支持(由glxinfo).

在这个 Fedora Box 中我有一个ATI Technologies Inc RV610 视频设备 [Radeon HD 2400 PRO],这是一个不错的视频卡。然后,我下载了yuvrect http://www.koders.com/c/fidC89186A9919D76D579AE11B90E597305F51D4941.aspx测试并做了一些更改来替换GL_TEXTURE_RECTANGLE_NV对于该卡支持的纹理:GL_TEXTURE_RECTANGLE_ARB.

但是,当我执行这个修改后的应用程序时,它输出:

The MESA driver reports *unsupported texture format in setup_hardware_state*

我注意到这个错误出现在glPopMatrix();是从执行Display()打回来。现在,这看起来不像是我的应用程序中的错误因为我在另一个具有不同显卡的 Fedora 盒子(同一系统)上运行了完全相同的代码:英特尔公司 Sandy Bridge 集成图形控制器(修订版 09),而且效果很好。

这两个二进制文件之间唯一可见的区别是它们所链接的库。在(有问题的)ATI 卡上ldd报告:

linux-gate.so.1 =>  (0x00da3000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x077bd000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x0783b000)
libglut.so.3 => /usr/lib/libglut.so.3 (0x005a9000)
libGLEW.so.1.5 => /usr/lib/libGLEW.so.1.5 (0x00aa3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x057e2000)
libm.so.6 => /lib/libm.so.6 (0x004e4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0053f000)
libc.so.6 => /lib/libc.so.6 (0x00358000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x0071b000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x009c5000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00af7000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00b76000)
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x0014e000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00101000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00510000)
libdl.so.2 => /lib/libdl.so.2 (0x0052d000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00110000)
/lib/ld-linux.so.2 (0x00337000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00859000)
librt.so.1 => /lib/librt.so.1 (0x00534000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00854000)

同时,在 Intel 卡上,您可以看到它与 libv4l 和其他一些库链接,而 ATI 则没有!我想知道这是否与我面临的问题有关:

linux-gate.so.1 =>  (0x008d6000)
/usr/lib/libv4l/v4l1compat.so (0x00345000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x4fb85000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x4fc10000)
libglut.so.3 => /usr/lib/libglut.so.3 (0x005a9000)
libGLEW.so.1.5 => /usr/lib/libGLEW.so.1.5 (0x4fc82000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x42ca7000)
libm.so.6 => /lib/libm.so.6 (0x41fbc000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x42017000)
libc.so.6 => /lib/libc.so.6 (0x41e30000)
libv4l1.so.0 => /usr/lib/libv4l1.so.0 (0x00110000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x421f8000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x424c0000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x42c0e000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x42d98000)
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x432a2000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x4247b000)
libpthread.so.0 => /lib/libpthread.so.0 (0x41fe8000)
libdl.so.2 => /lib/libdl.so.2 (0x42005000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x42748000)
/lib/ld-linux.so.2 (0x41e0f000)
libv4l2.so.0 => /usr/lib/libv4l2.so.0 (0x4217c000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x42337000)
librt.so.1 => /lib/librt.so.1 (0x4200c000)
libv4lconvert.so.0 => /usr/lib/libv4lconvert.so.0 (0x42357000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x421f3000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x43317000)

如果您想运行下面的示例,您需要readtex.c http://www.koders.com/c/fid2FF2C627A1499FD31506E73071C84B73EEC28686.aspx , readtex.h http://www.koders.com/c/fid0DFE124A7E00BE969B544D28014BBDBB797B3409.aspx and girl.rgb http://www.mediafire.com/?xe0u3cecb34q33q,并用以下命令编译它:g++ yuvrect.cpp -o yuvrect -lGL -lGLU -lglut -lGLEW

#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <GL/glew.h>
#include <GL/glut.h>

#include "readtex.c"   /* I know, this is a hack. */

#define TEXTURE_FILE "girl.rgb"

static GLfloat Xrot = 0, Yrot = 0, Zrot = 0;
static GLint ImgWidth, ImgHeight;
static GLushort *ImageYUV = NULL;


static void DrawObject(void)
{
   glBegin(GL_QUADS);

   glTexCoord2f(0, 0);
   glVertex2f(-1.0, -1.0);

   glTexCoord2f(ImgWidth, 0);
   glVertex2f(1.0, -1.0);

   glTexCoord2f(ImgWidth, ImgHeight);
   glVertex2f(1.0, 1.0);

   glTexCoord2f(0, ImgHeight);
   glVertex2f(-1.0, 1.0);

   glEnd();
}


static void Display( void )
{
   glClear( GL_COLOR_BUFFER_BIT );

   glPushMatrix();
      glRotatef(Xrot, 1.0, 0.0, 0.0);
      glRotatef(Yrot, 0.0, 1.0, 0.0);
      glRotatef(Zrot, 0.0, 0.0, 1.0);
      DrawObject();
   glPopMatrix(); // <--- error message comes from this call

   glutSwapBuffers();
}


static void Reshape( int width, int height )
{
   glViewport( 0, 0, width, height );
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 );
   glMatrixMode( GL_MODELVIEW );
   glLoadIdentity();
   glTranslatef( 0.0, 0.0, -15.0 );
}


static void Key( unsigned char key, int x, int y )
{
   (void) x;
   (void) y;
   switch (key) {
      case 27:
         exit(0);
         break;
   }
   glutPostRedisplay();
}


static void SpecialKey( int key, int x, int y )
{
   float step = 3.0;
   (void) x;
   (void) y;

   switch (key) {
      case GLUT_KEY_UP:
         Xrot += step;
         break;
      case GLUT_KEY_DOWN:
         Xrot -= step;
         break;
      case GLUT_KEY_LEFT:
         Yrot += step;
         break;
      case GLUT_KEY_RIGHT:
         Yrot -= step;
         break;
   }
   glutPostRedisplay();
}        

static void Init( int argc, char *argv[] )
{
   GLuint texObj = 100;
   const char *file;

   printf("Checking GL_ARB_texture_rectangle\n");
   if (!glutExtensionSupported("GL_ARB_texture_rectangle")) {
      printf("Sorry, GL_NV_texture_rectangle is required\n");
      exit(0);
   }

   printf("Checking GL_MESA_ycbcr_texture\n");
   if (!glutExtensionSupported("GL_MESA_ycbcr_texture")) {
      printf("Sorry, GL_MESA_ycbcr_texture is required\n");
      exit(0);
   }

   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

   glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texObj);
#ifdef LINEAR_FILTER
   /* linear filtering looks much nicer but is much slower for Mesa */
   glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
   glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
#else
   glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
   glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
#endif

   if (argc > 1)
      file = argv[1];
   else
      file = TEXTURE_FILE;

   ImageYUV = LoadYUVImage(file, &ImgWidth, &ImgHeight);
   if (!ImageYUV) {
      printf("Couldn't read %s\n", TEXTURE_FILE);
      exit(0);
   }

   printf("Image: %dx%d\n", ImgWidth, ImgHeight);

   printf("Calling glTexImage2D\n");
   glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0,
                GL_YCBCR_MESA, ImgWidth, ImgHeight, 0,
                GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, ImageYUV);
   printf("Called glTexImage2D\n");
   assert(glGetError() == GL_NO_ERROR);
   printf("* Assert #1\n");

   glTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB, 0,
                   0, 0, ImgWidth, ImgHeight,
                   GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, ImageYUV);

   assert(glGetError() == GL_NO_ERROR);
   printf("* Assert #2\n");

   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

   glEnable(GL_TEXTURE_RECTANGLE_ARB);

   glShadeModel(GL_FLAT);
   glClearColor(0.3, 0.3, 0.4, 1.0);

   if (argc > 1 && strcmp(argv[1], "-info")==0) {
      printf("GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER));
      printf("GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION));
      printf("GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR));
      printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
   }
}


int main( int argc, char *argv[] )
{
   glutInit( &argc, argv );
   glutInitWindowSize( 300, 300 );
   glutInitWindowPosition( 0, 0 );
   glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
   glutCreateWindow(argv[0] );
   glewInit();

   Init( argc, argv );

   glutReshapeFunc( Reshape );
   glutKeyboardFunc( Key );
   glutSpecialFunc( SpecialKey );
   glutDisplayFunc( Display );

   glutMainLoop();
   return 0;
}

伙计们,有什么建议可以解决这个问题吗?


这很可能是由于驱动程序错误或其他原因造成的。我不会帮你的。然而,回避着色器是不值得的。使用着色器,您可以忘记 GL_MESA_ycbcr_texture 并使您的应用程序更加兼容。

我们将使用普通的旧 GL_LUMINANCE_ALPHA 格式,因此图像加载变为:

glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0,
            GL_LUMINANCE_ALPHA, ImgWidth, ImgHeight, 0,
            GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, ImageYUV);

glTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB, 0,
               0, 0, ImgWidth, ImgHeight,
               GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, ImageYUV);

然后关于着色器:

static const char *p_s_vertex_shader =
    "varying vec2 t;"
    "void main()"
    "{"
    "    t = gl_MultiTexCoord0.xy;"
    "    gl_Position = ftransform();"
    "}";
static const char *p_s_fragment_shader =
    "#extension GL_ARB_texture_rectangle : enable\n"
    "varying vec2 t;"
    "uniform sampler2DRect tex;"
    "void main()"
    "{"
    "    vec2 tcEven = vec2(floor(t.x * .5) * 2.0, t.y);"
    "    vec2 tcOdd = vec2(tcEven.x + 1.0, t.y);"
    "    float Cb = texture2DRect(tex, tcEven).x - .5;"
    "    float Cr = texture2DRect(tex, tcOdd).x - .5;"
    "    float y = texture2DRect(tex, t).w;" // redundant texture read optimized away by texture cache
    "    float r = y + 1.28033 * Cr;"
    "    float g = y - .21482 * Cb - .38059 * Cr;"
    "    float b = y + 2.12798 * Cb;"
    "    gl_FragColor = vec4(r, g, b, 1.0);"
    "}";
int v = glCreateShader(GL_VERTEX_SHADER);
int f = glCreateShader(GL_FRAGMENT_SHADER);
int p = glCreateProgram();
glShaderSource(v, 1, &p_s_vertex_shader, 0);
glShaderSource(f, 1, &p_s_fragment_shader, 0);
glCompileShader(v);
//CheckShader(v);
glCompileShader(f);
//CheckShader(f);
glAttachShader(p, v);
glAttachShader(p, f);
glLinkProgram(p);
glUseProgram(p);
glUniform1i(glGetUniformLocation(p, "tex"), 0);

它出现在纹理之后,位于 Init() 末尾的某个位置。就是这样,就像一个魅力。为了调试,最好也包含 CheckShader() (它报告着色器中的编译错误):

bool CheckShader(int n_shader_object)
{
    int n_tmp;
    glGetShaderiv(n_shader_object, GL_COMPILE_STATUS, &n_tmp);
    bool b_compiled = n_tmp == GL_TRUE;
    int n_log_length;
    glGetShaderiv(n_shader_object, GL_INFO_LOG_LENGTH, &n_log_length);
    // query status ...

    if(n_log_length > 1) {
        char *p_s_temp_info_log;
        if(!(p_s_temp_info_log = (char*)malloc(n_log_length)))
            return false;
        int n_tmp;
        glGetShaderInfoLog(n_shader_object, n_log_length, &n_tmp,
            p_s_temp_info_log);
        assert(n_tmp <= n_log_length);

        fprintf(stderr, "%s\n", p_s_temp_info_log);
        free(p_s_temp_info_log);
    }
    // get/concat info-log

    return b_compiled;
}

着色器版本可能会比硬件优化版本慢一点,但我想说这没什么好担心的。

如果您决定尝试一下代码,并且有任何问题,请告诉我......

EDIT:实际上在 ATi 上运行这个有一个问题,最后发现传递变量“t”时出错,换句话说,这不起作用:

static const char *p_s_vertex_shader =
    "varying vec2 t;"
    "void main()"
    "{"
    "    t = gl_MultiTexCoord0.xy;"
    "    gl_Position = ftransform();"
    "}";
static const char *p_s_fragment_shader =
    "#extension GL_ARB_texture_rectangle : enable\n"
    "varying vec2 t;"
    "uniform sampler2DRect tex;"
    "void main()"
    "{"
    "    gl_FragColor = texture2DRect(tex, t);"
    "}";

为了轻松解决此问题,只需删除顶点着色器并让固定管道写入纹理坐标即可。所以这也适用于 ATi:

static const char *p_s_vertex_shader = null; // no vertex shader
static const char *p_s_fragment_shader =
    "#extension GL_ARB_texture_rectangle : enable\n"
    "uniform sampler2DRect tex;"
    "void main()"
    "{"
    "    vec2 t = gl_TexCoord[0];" // use fixed pipeline output 
    "    gl_FragColor = texture2DRect(tex, t);"
    "}";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glPopMatrix() 喊叫“setup_hardware_state 中不支持纹理格式” 的相关文章

  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp

随机推荐

  • WCF 服务参考 - 在客户端获取“XmlException:名称不能以 '<' 字符开头,十六进制值 0x3C”

    我有一个智能客户端应用程序通过 WCF 与其服务器进行通信 数据在客户端上创建 然后通过服务发送以进行持久化 服务器和客户端通过共享 dll 使用相同的域类 并且我在 Visual Studio 中使用方便的 添加服务引用 功能 该功能包装
  • 如何将双精度数组传递给 C 中的函数?

    我一整天都在尝试解决这个问题 如何将双精度数组传递给函数 这是一个例子 int matrix 5 2 1 2 3 4 5 6 7 8 9 10 我希望将此矩阵传递给名为的函数eval matrix void eval matrix int
  • heroku - system.properties 和 java 版本

    我想将我的 java 7 应用程序部署到Heroku但我遇到了java版本的一些问题 I added system properties我的项目根目录中的文件 其中src and pom xml是 有内容java runtime versi
  • 如何在其他活动的 onResume 之后更新 ListView?

    我正在尝试创建一个应用程序 使用户能够创建事件 然后邀请参与者 因此 当用户进入 添加参与者 页面时 输入所有信息后 我尝试使用 onResume 直接返回 参与者列表 页面 但如何更新列表视图 我尝试使用notifyDataSetChan
  • 在某些计算机上应用程序无法加载 sqlite dll 文件

    我编写了一个使用 sqlite 的应用程序 它在most的系统 它是用 C 编写的 唯一的非框架程序集是 sqlite 它包含在 System Data SQLite dll 中 我以相同的方式在所有计算机上部署它 复制粘贴 exe 文件
  • OpenGL 纹理反转

    我正在尝试将网络摄像头的输入映射到 OpenGL 中的平面 我正在使用 OpenCV 从网络摄像头获取图像 我遇到的问题是纹理是垂直反转的 如果我的纹理是 v 则当前结果是 我想将从网络摄像头拍摄的图像调整到我的飞机上 2x2 它的左下角是
  • 在本地主机的 Android 应用程序中使用 Web 服务

    我正在尝试使用我从 Android 应用程序本地创建的 Web 服务 我的问题是 在我的 Android 应用程序中 在某个时刻 我必须提供一个带有如下参数的 URL where CalculatorWS是我使用的网络服务 add是其中的操
  • 如何使用 setuptools 在 Python 3.6 中的库发行版上包含父文件夹结构?

    我正在使用 setuptools 来分发 Python 库 我有以下目录结构 src production setup py prod library package1 package2 文件夹结构必须保持这样 因为将来会有多个库位于 sr
  • 如何选择目录中的第一个文件?

    我试图在不知道文件名的情况下逐个处理目录中的一些文件 所以我用过os listdir path 列出文件 所以我必须在每次调用函数时列出文件 问题是当有很多文件 比如 2000 个 时 列出每个文件需要很长时间 而我只想要第一个文件 有没有
  • Cassandra 3.0 不接受 Java 11 安装

    我正在尝试启动 Cassandra 3 但它给出了消息 Cassandra 3 0 及更高版本需要 Java 8u40 或更高版本 我安装了 Java 11 gt java version java version 11 0 11 2021
  • 收到推送后出现意外的系统错误

    今天 github com 出现了一些停机时间 直到我去推送大约十几个本地提交时我才意识到 https status github com messages https status github com messages https tw
  • 使用 xcopy 批量复制文件

    我已经在互联网上检查了一些示例 但我无法让我的 第一个 批处理文件工作 我想自动将文件从一个文件夹复制到另一个文件夹 但没有任何反应 echo off xcopy C source C target c d i y exit 你能看出有什么
  • AttributeError:模块“numpy”没有属性“__version__”

    我今天更新了计算机 当我尝试导入 pandas 时收到以下错误消息 import pandas as pd AttributeError module numpy has no attribute version 我已尝试以下链接中的建议
  • 如何从 OneDrive 下载文件

    我想从 One Drive 下载公共文件夹中的文件 但它不下载这些文件 这是场景 在公共文件夹中 我有另一个文件夹 其中包含多个文件 并且可以广泛访问 出于测试目的 我共享了公共文件夹中的所有文件 如果这是正确的共享方式 我不会共享 以下链
  • laravel 5.2 将数据传递到注册视图

    我正在使用 laravel 5 2 我编写了以下命令来自动添加身份验证的路由和视图 php artisan make auth 现在我想将数据传递到注册视图 但我找不到在哪里执行此操作 我认为应该使用如下代码 Route get regis
  • 停止重复 UIView 动画块?

    我有一个 UIView 动画块 它使用UIViewAnimationOptionRepeat UIViewAnimationOptionAutoReverse选项 因此它会继续进行 但在某些时候我需要停止动画 但更重要的是停止它并使视图返回
  • Angular 中使用 rxjs 的用户通知服务?

    我对反应式编程比较陌生 我正在尝试创建一个可以向用户显示通知的 Angular 服务 到目前为止 这就是我所拥有的 https stackblitz com edit angular rxjs notifications file app
  • 当半径增加时如何在 CLLocationManager 中为区域绘制固定圆

    我有一个要求 我必须在 CLLocationManager 中为区域绘制一个圆圈 我已经完成了本准则的要求 CLLocationDegrees latitude 37 33492222 CLLocationDegrees longitude
  • 如何在android中使用XMLStreamWriter编写XMl文件

    我想创建 XML 文件 这是我的以下代码 String fileName jasstech xml XMLOutputFactory xof XMLOutputFactory newInstance XMLStreamWriter xtw
  • glPopMatrix() 喊叫“setup_hardware_state 中不支持纹理格式”

    我正在尝试对 Linux 的私人视频播放器进行一些优化 旨在提高性能 因为播放 MP4 文件对 CPU 的占用很大 自从视频帧采用 YV12 编码并且 OpenGL 不提供显示此格式的本机方法 现在有一段代码在CPU上运行 在将图像发送到G